Problem:
おそろいの景品
ジョウ君とヤエさんは仲の良いカップルです。ジョウ君はカプセル玩具自販機(ガチャポン)の景品を集めており、二人で出かけたときも、ガチャポンを見つけると何度かやってみるほどの熱の入りようです。ヤエさんは楽しそうなジョウ君をそばで見ているだけでしたが、ジョウ君の今度の誕生日プレゼントにガチャポンの景品をひとつあげることにしました。ヤエさんはガチャポン自体にはあまり興味がわきませんでしたが、できればジョウ君とおそろいの景品が欲しいと思っています。
ヤエさんがやってみようと思うガチャポンは、１回のチャレンジで景品がひとつ出ます。品切れのものも含め景品が何種類あるのかと、それぞれの景品がいくつ残っているのかはわかります。しかし、1回のチャレンジでどの景品が出るかはわかりません。そこで、景品が出る順番にかかわらず、ヤエさんが同じ景品を必ず２つ得るために最低限必要なチャレンジの回数を出力するプログラムを作成してください。
入力
入力は複数のデータセットからなる。入力の終わりはゼロ1つの行で示される。各データセットは以下の形式で与えられる。
N
k
1
k
2
...
k
N
各データセットは2行であり、1行目に景品が何種類あるかを表す整数
N
(1 ≤
N
≤ 10000)が与えられる。続く1行に各景品がいくつ残っているのかを表す整数
k
i
(0 ≤
k
i
≤ 10000)が与えられる。
データセットの数は100を超えない。
出力
データセットごとに、同じ景品を必ず２つ得るために最低限必要なチャレンジの回数を出力する。ただし、不可能な場合はNAと出力する。
入力例
2
3 2
3
0 1 1
1
1000
0
出力例
3
NA
2
１つ目のデータセットでは、運良く１種類目か２種類目の景品が連続で出て２回で済む可能性はあるが、同じ種類の景品を必ず２つ得るためには３回チャレンジする必要がある。
２つ目のデータセットでは、２つ以上残っている景品がもともと無いので不可能である。
３つ目のデータセットでは、景品は１種類だけなので２回のチャレンジでその景品が必ず２つ得られる。

Submitted solutions:

code_snippet: #include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <string>
#include <map>
#include <numeric>
#include <bitset>
#include <vector>
#include <queue>

using namespace std;

typedef long long ll;
#define FOR(i,a,b)  for( ll i = (a); i < (b); i++ )
#define REP(i,n)    FOR(i,0,n)
typedef pair< ll, ll >   cp2;
typedef pair< ll, cp2 >  cp3;
#define fi first
#define se second
#define sec se.fi
#define thr se.se
const ll mod = 1000000007;
//              123456789

int k[10005];

int main(){
	int n;
	
	while (cin >> n, n){
		int flag = 1;
		
		int num = n;
		
		REP(i,n){
			cin >> k[i];
			
			if (k[i] > 1) flag = 0;
			if (k[i] == 0) num--;
		}
		
		if (flag)	cout << "NA" << endl;
		else cout << num+1 << endl;
	}
	
	return 0;
}
accuracy: 1
time_ms: 70
memory_kb: 3448
final_rank: 16

code_snippet: #include <bits/stdc++.h>
using namespace std;
// #include<atcoder/all>
// using mint = atcoder::modint998244353;
using ld = long double;
#define fi first
#define se second
#define all(x) x.begin(),x.end()
#define rep(i,n) for(int i=0;i<(int)(n);++i)
template<typename T>bool chmin(T&a,T b){return b<a?(a=b,1):0;}
template<typename T>bool chmax(T&a,T b){return b>a?(a=b,1):0;}

int main(){
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    
    for(int N;cin>>N,N!=0;){
        int w=0;
        int ma=0;
        rep(i,N){
            int k;
            cin>>k;
            w+=min(k,1);
            chmax(ma, k);
        }
        if(ma<=1) cout<<"NA\n";
        else cout<<w+1<<"\n";
    }
}
accuracy: 1
time_ms: 10
memory_kb: 3456
final_rank: 4

code_snippet: #include<bits/stdc++.h>
using namespace std;
#define ll long long
#define rep(i,N) for(ll i=0;i<N;i++)
#define all(x) x.begin(),x.end()

bool solve(){
    ll N;cin>>N;
    if(N==0)return false;
    bool can = false;
    ll ans = 1;
    rep(i,N){
        ll k;cin>>k;
        if(k>=1)ans++;
        if(k>=2)can = true;
    }
    if(can){
        cout<<ans<<endl;
    }
    else {
        cout<<"NA"<<endl;
    }
    return true;
}

int main(){
    while(solve());
}
accuracy: 1
time_ms: 70
memory_kb: 3440
final_rank: 15

code_snippet: #include<iostream>
#include<vector>
using namespace std;
int main(){
    int n;
    int k[10000];
    int cnt = 0;
    int cnt2 = 0;
    vector<int> ans;
    while(true){
        cin >> n;
        if(n == 0) break;
        cnt = 0;
        cnt2=0;
        for(int i=0; i<n; ++i){
            cin >> k[i];
            if(k[i] >= 1) cnt++;
            if(k[i] <= 1) cnt2++;
        }
        if(cnt2==n) cnt = 0;
        ans.push_back(cnt);
    }
    for(int i=0; i<(int)ans.size(); ++i){
        if(ans[i]==0) cout << "NA" << endl;
        else cout << ans[i]+1 << endl;
    }
}
accuracy: 1
time_ms: 60
memory_kb: 3480
final_rank: 14

code_snippet: #include<iostream>
#include<vector>
using namespace std;
int main(){
    int n;
    int k[10000];
    int cnt = 0;
    vector<int> ans;
    while(true){
        cin >> n;
        if(n == 0) break;
        cnt = 0;
        for(int i=0; i<n; ++i){
            cin >> k[i];
            if(k[i] >= 2) cnt++;
        }
        ans.push_back(cnt);
    }
    for(int i=0; i<(int)ans.size(); ++i){
        if(ans[i]==0) cout << "NA" << endl;
        else cout << ans[i]+1 << endl;
    }
}
accuracy: 0.3333333333333333
time_ms: 40
memory_kb: 3448
final_rank: 20

code_snippet: #include <bits/stdc++.h>
using namespace std;

int main() {
    while (1) {
        int n;
        cin >> n;
        if (n == 0) {
            break;
        }
        int k[n + 1];
        int sum[n + 1] = {};
        int cnt = 0;
        bool flg = false;
        for (int i = 1; i <= n; i++) {
            cin >> k[i];
            if (k[i] > 0) {
                cnt++;
            }
            if (k[i] >= 2) {
                flg = true;
            }
            sum[i] = sum[i - 1] + k[i];
        }
        if (!flg) {
            cout << "NA\n";
            continue;
        }
        cout << cnt + 1 << "\n";
    }
    return(0);
}
accuracy: 1
time_ms: 70
memory_kb: 3500
final_rank: 17

code_snippet: #include <bits/stdc++.h>
using namespace std;

int main() {
    while (1) {
        int n;
        cin >> n;
        if (n == 0) {
            break;
        }
        int k[n + 1];
        int sum[n + 1] = {};
        bool flg = false;
        for (int i = 1; i <= n; i++) {
            cin >> k[i];
            if (k[i] < 2) {
                flg = true;
            }
            sum[i] = sum[i - 1] + k[i];
        }
        if (flg) {
            cout << "NA\n";
            continue;
        }
        cout << n + 1 << "\n";
    }
    return(0);
}
accuracy: 0.3333333333333333
time_ms: 40
memory_kb: 3432
final_rank: 19

code_snippet: #include<bits/stdc++.h>
using namespace std;
int main(void)
{
		int n,k,cnt,flg,i;
		while(1){
			cin>>n;
		    if(n==0)break;
			flg=0;cnt=0;
			for(i=0;i<n;i++){
			cin>>k;
			if(k>=2)flg=1;
			if(k>=1)cnt++;
			}
			if(flg==0)cout<<"NA"<<endl;
			else cout<<cnt+1<<endl;
		}
	return 0;
}
accuracy: 1
time_ms: 90
memory_kb: 3112
final_rank: 11

code_snippet: #include<bits/stdc++.h>
#define ph push_back
#define p push
#define ll long long
using namespace std;
int main()
{
	int n,k[10001],cnt=0,c=0;
	bool f=false;
	while(1) {
		cin >> n;
		if ( n == 0 ) break;
		for( int i = 0 ; i < n ; i ++ ) cin >> k[i];
		for(int i=0;i<n;i++){
			if(k[i]>=2) cnt++;
			if(k[i]>=1) c++;
		}
		if(cnt>=1) cout<<c+1<<endl;
		else cout<<"NA"<<endl;
		cnt=0; c=0;
	}
	return 0;
}
accuracy: 1
time_ms: 90
memory_kb: 3112
final_rank: 11

code_snippet: #include<bits/stdc++.h>
using namespace std;
int main(void)
{
	int n,k,cnt,flg;
	while(1){
		cin>>n;
		if(n==0)break;
		flg=0;
		cnt=0;
		for(int i=0;i<n;i++){
			cin>>k;
			if(k>=2)flg=1;
			if(k>=1)cnt++;
		}
		if(flg==0) cout<<"NA"<<endl;
		else cout<<cnt+1<<endl;
	}
	return 0;
}
accuracy: 1
time_ms: 90
memory_kb: 3092
final_rank: 7

code_snippet: #include<bits/stdc++.h>
#define ph push_back
#define p push
#define ll long long
using namespace std;
int main()
{
	int n,k[10001],cnt=0,c=0,flg[10001]={0},fl[10001]={0};
	bool f=false;
	while(1) {
		cin >> n;
		if ( n == 0 ) break;
		for( int i = 0 ; i < n ; i ++ ) cin >> k[i];
		for(int i=0;i<n;i++){
			if(k[i]>=2) cnt++;
			if(k[i]>=1) c++;
		}
		if(cnt>=1) cout<<c+1<<endl;
		else cout<<"NA"<<endl;
		cnt=0; c=0;
	}
	return 0;
}
accuracy: 1
time_ms: 90
memory_kb: 3148
final_rank: 13

code_snippet: #include <bits/stdc++.h>
using namespace std;
int main(void){
	int n,k,i,cnt,tnc;
	while(1){
		cnt=0;
		tnc=0;
		cin>>n;
		if(n==0) break;
		for(i=0;i<n;i++){
			cin>>k;
			if(k>=2) cnt++;
			else if(k==0) tnc++;
		}
		if(n==1 && cnt==1) cout<<2<<endl;
		else if(n>=2 && cnt>=1) cout<<n+1-tnc<<endl;
		else cout<<"NA"<<endl;
	}
	return 0;
}
accuracy: 1
time_ms: 90
memory_kb: 3092
final_rank: 7

code_snippet: #include<bits/stdc++.h>
using namespace std;
int main(void)
{
	int n,k,cnt,flg,i;
	while(1)	{
		cin >>n;
		if(n==0)	break;
		flg=0;	cnt=0;
		for(i=0;i<n;i++)	{
			cin >>k;
			if(k>=2)	flg=1;
			if(k>=1)	cnt++;
		}
		if(flg==0)	cout <<"NA"<<endl;
		else cout <<cnt+1<<endl;
	}
	return 0;
}
accuracy: 1
time_ms: 90
memory_kb: 3108
final_rank: 10

code_snippet: #include <iostream>
using namespace std;

int main()
{
    while (true)
    {
        int n;
        cin >> n;
        if (0 == n)
        {
            break;
        }

        int upper1 = 0;
        int upper2 = 0;

        for (int i = 0; i < n; ++i)
        {
            int k;
            cin >> k;
            if (k >= 1) ++upper1;
            if (k >= 2) ++upper2;
        }
        if (0 == upper2)
        {
            cout << "NA" << endl;
        }
        else
        {
            cout << upper1 + 1 << endl;
        }
    }
}
accuracy: 1
time_ms: 90
memory_kb: 3084
final_rank: 5

code_snippet: #include <iostream>
using namespace std;

int main()
{
    while (true)
    {
        int n;
        cin >> n;
        if (0 == n)
        {
            break;
        }

        int less1cnt = 0;
        int zerocnt = 0;

        for (int i = 0; i < n; ++i)
        {
            int k;
            cin >> k;
            if (k <= 1)
            {
                ++less1cnt;
            }
            if (0 == k)
            {
                ++zerocnt;
            }
        }
        if (n == less1cnt)
        {
            cout << "NA" << endl;
        }
        else
        {
            cout << n - zerocnt + 1 << endl;
        }
    }
}
accuracy: 1
time_ms: 90
memory_kb: 3084
final_rank: 5

code_snippet: #include <iostream>
using namespace std;

int main()
{
    while (true)
    {
        int n;
        cin >> n;
        if (0 == n)
        {
            break;
        }

        int lesscnt = 0;
        int zerocnt = 0;

        for (int i = 0; i < n; ++i)
        {
            int k;
            cin >> k;
            if (k <= 1)
            {
                ++lesscnt;
            }
            if (0 == k)
            {
                ++zerocnt;
            }
        }
        if (n == lesscnt)
        {
            cout << "NA" << endl;
        }
        else
        {
            cout << n - zerocnt + 1 << endl;
        }
    }
}
accuracy: 1
time_ms: 90
memory_kb: 3096
final_rank: 9

code_snippet: #include <iostream>
using namespace std;

int main()
{
    while (true)
    {
        int n;
        cin >> n;
        if (0 == n)
        {
            break;
        }

        int lesscnt = 0;
        int zerocnt = 0;

        for (int i = 0; i < n; ++i)
        {
            int k;
            cin >> k;
            if (k <= 1)
            {
                ++lesscnt;
            }
            else if (0 == k)
            {
                ++zerocnt;
            }
        }
        if (n == lesscnt)
        {
            cout << "NA" << endl;
        }
        else
        {
            cout << n - zerocnt + 1 << endl;
        }
    }
}
accuracy: 0.3333333333333333
time_ms: 50
memory_kb: 3096
final_rank: 18

code_snippet: #include <stdio.h>
#include <stdbool.h>

int main(void) {
  int num_elements, num_non_zeros, current_num, zero_count, i;
  bool num_greater_than_one_exists;

  while (1) {
    num_greater_than_one_exists = false;
    zero_count = 0;

    scanf("%d", &num_elements);
    if (num_elements == 0)
      break;

    for (i = 0; i < num_elements; i++) {
      scanf("%d", &current_num);
      if (current_num == 0) {
        zero_count++;
      }
      if (current_num >= 2) {
        num_greater_than_one_exists = true;
      }
    }

    num_non_zeros = num_elements - zero_count;
    if (num_greater_than_one_exists) {
      printf("%d\n", num_non_zeros + 1);
    } else {
      printf("NA\n");
    }
  }
  return 0;
}
accuracy: 1
time_ms: 30
memory_kb: 2732
final_rank: 2

code_snippet: #include <stdio.h>
int main(void) {
  int s, n, k, i, flg;
  while (1) {
    flg = 0;
    s = 0;
    scanf("%d", &n);
    if (n == 0)
      break;
    for (i = 0; i < n; i++) {
      scanf("%d", &k);
      if (k >= 2) {
        flg = 1;
      }
      if (k != 0) {
        s = s + 1;
      }
    }
    if (flg == 1) {
      printf("%d\n", s + 1);
    } else {
      printf("NA\n");
    }
  }
  return 0;
}
accuracy: 1
time_ms: 30
memory_kb: 2760
final_rank: 3

code_snippet: #include <stdio.h>

int main(void) {
  int s = 0, n, k, i, flg;
  while (1) {
    flg = 0;
    s = 0;
    scanf("%d", &n);
    if (n == 0)
      break;
    for (i = 0; i < n; i++) {
      scanf("%d", &k);
      if (k != 0) {
        s++;
        if (k >= 2) {
          flg = 1;
        }
      }
    }
    if (flg == 1) {
      printf("%d\n", s + 1);
    } else {
      printf("NA\n");
    }
  }
  return 0;
}
accuracy: 1
time_ms: 30
memory_kb: 2708
final_rank: 1