Problem:
旅行はいつ?
あなたは友人と旅行に行きたいと考えています。ところが、浪費癖のある友人はなかなか旅行費用を貯めることができません。友人が今の生活を続けていると、旅行に行くのはいつになってしまうか分かりません。そこで、早く旅行に行きたいあなたは、友人が計画的に貯蓄することを助けるプログラムを作成することにしました。
友人のある月のお小遣いを
M
円、その月に使うお金を
N
円とすると、その月は (
M
-
N
) 円貯蓄されます。毎月の収支情報
M
、
N
を入力とし、貯蓄額が旅行費用
L
に達するのにかかる月数を出力するプログラムを作成してください。ただし、12 ヶ月を過ぎても貯蓄額が旅行費用に達しなかった場合はNA と出力してください。
Input
複数のデータセットの並びが入力として与えられます。     入力の終わりはゼロひとつの行で示されます。
各データセットは以下の形式で与えられます。
L
M
1
N
1
M
2
N
2
:
M
12
N
12
1 行目に旅行費用
L
(1 ≤
L
≤ 1000000, 整数) が与えられます。続く 12 行に、
i
月目の収支情報
M
i
,
N
i
(0 ≤
M
i
, N
i
≤ 100000,
N
i
≤
M
i
, 整数) が与えられます。
データセットの数は 1000 を超えません。
Output
入力データセットごとに、貯蓄額が旅行費用に達するのにかかる月数を１行に出力します。
Sample Input
10000
5000 3150
5000 5000
0 0
5000 1050
5000 3980
5000 210
5000 5000
5000 5000
0 0
5000 2100
5000 2100
5000 2100
29170
100000 100000
100000 100000
100000 100000
100000 100000
100000 100000
100000 100000
100000 100000
100000 100000
100000 100000
100000 100000
100000 100000
100000 70831
0
Output for the Sample Input
6
NA

Submitted solutions:

code_snippet: #include <iostream>
#include <algorithm>
#include <string>
#include <cstring>
#include <cstdio>
#include <cstdlib>
#include <vector>
#include <queue>
#include <stack>
#include <complex>
#include <utility>
#include <set>
#include <cmath>
#define loop(i,a,b) for(int i=a;i<b;i++)
#define rep(i,a) loop(i,0,a)
#define pi acos(-1)
#define all(v) v.begin(),v.end()
#define EPS (1e-10)
#define EQ(a,b) (abs((a)-(b))<EPS)
#define EQV(a,b) (EQ((a).real(),(b).real()) && EQ((a).imag(),(b).imag()))
using namespace std;
typedef pair<int,int> point;
typedef complex<double> P;
typedef long long ll;

const double eps = 1e-8;
const double INF = 1e12;


double dot(P a,P b){
	return a.real()*b.real()+a.imag()*b.imag();
}
double cross(P a,P b){
	return a.real()*b.imag()-a.imag()*b.real();
}

bool is_orthogonal(P a1,P a2,P b1,P b2){
	return EQ(dot(a1-a2,b1-b2),0.0);
}
bool is_parallel(P a1,P a2,P b1,P b2){
	return EQ(cross(a1-a2,b1-b2),0.0);
}

bool is_point_on_line(P a,P b,P c){
	return EQ(cross(b-a,c-a),0.0);
}

bool is_point_on_linesegment3(P a,P b,P c){
	return (abs(a-c)+abs(c-b)<abs(a-b)+EPS);
}

double distance_l_p(P a,P b,P c){
	return abs(cross(b-a,c-a))/abs(b-a);
}


double distance_ls_p(P a,P b,P c){
	if(dot(b-a,c-a)<EPS)return abs(c-a);
	if(dot(a-b,c-b)<EPS)return abs(c-b);
	return abs(cross(b-a,c-a))/abs(b-a);
}

int main(){
	int m,n,l;
	while(cin>>l,l){
		int ans=-1;
		rep(i,12){
			cin>>m>>n;
			l-=(m-n);
			if(l<=0 && ans==-1){
				ans=i+1;
			}
		}
		if(ans==-1)cout<<"NA"<<endl;
		else cout<<ans<<endl;
	}
	return 0;
}
accuracy: 1
time_ms: 10
memory_kb: 1160
final_rank: 1

code_snippet: #include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <cmath>
#include <cstdio>
#include <functional>
#include <numeric>
#include <stack>
#include <queue>
#include <map>
#include <set>
#include <utility>
#include <sstream>
#include <complex>

using namespace std;

#define FOR(i,a,b) for(long long i=(a);i<(b);i++)
#define REP(i,N) for(long long i=0;i<(N);i++)
#define ALL(s) (s).begin(),(s).end()
#define fi first
#define se second

#define PI acos(-1.0)
#define INF 1000000007

typedef long long ll;
typedef pair<ll, ll> P;
typedef pair<double, double> PD;
typedef pair<string, ll> PS;
typedef vector<ll> V;

ll l, m, n, sum;
int f = 0;

int main(){
	while (cin >> l&&l){
		f = 0;
		sum = 0;
		REP(i, 12){
			cin >> m >> n;
			sum += m - n;
			if (f == 0){
				if (sum >= l)f = i + 1;
			}
		}
		if (f == 0)cout << "NA\n";
		else cout << f << endl;
	}
}
accuracy: 1
time_ms: 10
memory_kb: 1160
final_rank: 1

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

#define for_(i,a,b) for(int i=(a);i<(b);++i)

int main() {
	int L;
	
	while (cin >> L, L) {
		int sum = 0, ans = -1;
		
		for_(i,0,12) {
			int M, N;
			cin >> M >> N;
			sum += (M - N);
			if (sum >= L && ans == -1) ans = i + 1;
		}
		
		if (ans == -1) puts("NA");
		else cout << ans << endl;
	}
}
accuracy: 1
time_ms: 10
memory_kb: 1160
final_rank: 1

code_snippet: #include <set>
#include <map>
#include <list>
#include <queue>
#include <stack>
#include <cmath>
#include <ctype.h>
#include <ctime>
#include <cstdio>
#include <vector>
#include <string>
#include <bitset>
#include <cctype>
#include <cstdlib>
#include <cstring>
#include <utility>
#include <numeric>
#include <complex>
#include <sstream>
#include <fstream>
#include <iomanip>
#include <cassert>
#include <iostream>
#include <iterator>
#include <algorithm>
#define ALL(g) (g).begin(),(g).end()
#define REP(i, x, n) for(int i = x; i < n; i++)
#define rep(i,n) REP(i,0,n)
#define F(i,j,k) fill(i[0],i[0]+j*j,k)
#define P(p) cout<<(p)<<endl;
#define EXIST(s,e) ((s).find(e)!=(s).end())
#define INF 1<<25
#define pb push_back
using namespace std; 
typedef vector<int> vi;
typedef vector<long long> vl;
typedef vector<double> vd;
typedef pair<int,int> pii;
typedef pair<long,long> pll;
typedef long long ll;
 
int calc(int n,int *i,int *o){
  int *p,*q;
  p = i;
  q = o;
  int count = 0;
  for(int i = 0;i < 12;i++){
    count += *p - *q;
    if(count >= n) return i+1;
    p++;q++;
  }
  return -1;
}

int main(){
  int n;
  int in[12],out[12];
  int c;
  while(1){
    cin >> n;
    if(n == 0)break; 
    for(int i = 0;i < 12;i++){
      cin >> in[i] >> out[i];
    }
    int count = 0;
    for(int i = 0;i < 12;i++){
      count += in[i] - out[i];
      if(count >= n){P(i+1);break;}
      if(i == 11) P("NA");
    }
  }
  return 0;
}
accuracy: 1
time_ms: 10
memory_kb: 1160
final_rank: 1

code_snippet: #include<iostream>

int main(){

	int l;
	while (std::cin >> l){

		if (l == 0)break;

		bool flg = true;
		for (int i = 1, m, n; i <= 12; i++){
			std::cin >> m >> n;
			l -= (m - n);

			if (flg&&l <= 0)std::cout << i << std::endl, flg = false;
			if (i == 12 && l > 0)std::cout << "NA" << std::endl;
		}
	}

	return 0;
}
accuracy: 1
time_ms: 10
memory_kb: 1160
final_rank: 1

code_snippet: #include<iostream>

using namespace std;
int main(void){

	int L,M,N,wa=0,mo=-1;
	while(1){
		wa=0,mo=-1;
		cin>>L;
		if(L==0) break;
		for(int i=1;i<=12;i++){
			cin>>M>>N;
			wa+=M-N;
			if(wa>=L&&mo==-1) mo=i;
		}
		if(mo!=-1) cout<<mo<<endl;
		else cout<<"NA"<<endl;
	}
	return 0;
}
accuracy: 1
time_ms: 10
memory_kb: 1160
final_rank: 1