Problem:
カロリー計算
食べ物には3大栄養素と呼ばれる「たんぱく質」「脂質」「炭水化物」の３つの栄養素が含まれています。１g（グラム）あたりたんぱく質と炭水化物は 4 kcal（キロカロリー）、脂質は 9 kcal と計算されます。たとえば、下の表によると番号１のケーキにはタンパク質 7 g、脂質 14 g、炭水化物 47 g が含まれています。これをもとに含まれるカロリーを計算すると、4 × 7 + 9 × 14 + 4 × 47 = 342 kcal となります。その他も同様に計算されています。
番号
名前
たんぱく質(g)
脂質(g)
炭水化物(g)
カロリー(kcal)
1
ケーキ
7
14
47
342
2
ポテトチップス
5
35
55
555
3
どら焼き
6
3
59
287
4
プリン
6
5
15
129
分類の対象となるお菓子の個数
n
と各お菓子の情報、制限の情報を入力とし、そのお菓子一つだけなら制限を超えることがない（食べてもよい）お菓子の一覧を出力するプログラムを作成してください。
お菓子の情報は、お菓子の番号
s
、そのお菓子に含まれるたんぱく質の重量
p
、脂質の重量
q
、炭水化物の重量
r
から構成されています。制限の情報には、含むことができる最大のたんぱく質の重量
P
、脂質の重量
Q
、炭水化物の重量
R
、および摂取することができる最大のカロリー
C
からなっており、タンパク質、脂質、炭水化物、カロリーのいずれかの一つでも超えると制限違反となり、「食べてはいけないお菓子」と判断されます。
食べてもよいお菓子の一覧は、食べてもよいお菓子の番号を入力順に出力してください。なお、食べてもよいお菓子がなければ”NA”と出力してください。
上の表にある4個のお菓子について、
P
= 10,
Q
= 15,
R
= 50,
C
= 400 という制限の場合、ケーキとプリンはそれぞれの栄養素及びカロリーが制限値以下なので食べてもよいお菓子に分類されますが、ポテトチップスは炭水化物とカロリー、どら焼きは炭水化物の量が制限値を超えているため食べてはいけないお菓子に分類されます。
入力
複数のデータセットの並びが与えられます。入力の終わりはゼロひとつの行で示されます。各データセットは以下の形式で与えられます。
n
s
1
p
1
q
1
r
1
s
2
p
2
q
2
r
2
:
s
n
p
n
q
n
r
n
P
Q
R
C
1行目にお菓子の数
n
(1 ≤
n
≤ 1000)が与えられます。続く
n
行に第
i
のお菓子の番号
s
i
(1 ≤
s
i
≤ 1000)、各栄養素の重量を表す整数
p
i
,
q
i
,
r
i
(0 ≤
p
i
,
q
i
,
r
i
≤ 100) が与えられます。
続く行に各栄養素及びカロリーの制限値を表す整数
P
,
Q
,
R
(0 ≤
P
,
Q
,
R
≤ 100),
C
(0 ≤
C
≤ 1700) が与えられます。
データセットの数は 100 を超えません。
出力
データセットごとに、食べてもよいお菓子の番号または ”NA” を出力します。
入力例
4
1 7 14 47
2 5 35 55
3 6 3 59
4 6 5 15
10 15 50 400
2
1 8 10 78
2 4 18 33
10 10 50 300
0
出力例
1
4
NA

Submitted solutions:

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

int main() {//4 4 9
	int n, s, p, q, r, P, Q, R, C;
	while (1) {
		cin >> n;
		if (n == 0) break;
		vector<int> food, num(n), ps(n), qs(n), rs(n), cal(n);
		for (int i = 0; i < n; i++) {
			cin >> s >> p >> q >> r;
			num[i] = s;
			ps[i] = p;
			qs[i] = q;
			rs[i] = r;
			cal[i] = p * 4 + q * 9 + r * 4;
		}
		cin >> P >> Q >> R >> C;
		for (int i = 0; i < n; i++) {
			if (ps[i] <= P && qs[i] <= Q && rs[i] <= R && cal[i] <= C) food.push_back(num[i]);
		}
		if (food.empty()) cout << "NA\n";
		else for (auto i : food) cout << i << endl;
	}
	return 0;
}
accuracy: 1
time_ms: 10
memory_kb: 3584
final_rank: 14

code_snippet: #include <iostream>
using namespace std;

int main(){
    int n;

    while(1){
        cin >> n;
        if(n==0) break;
        int s[n],p[n],q[n],r[n],c[n];
        for(int i=0;i<n;i++){
            cin >> s[i] >> p[i] >> q[i] >> r[i];
        }
        for(int i=0;i<n;i++){
            c[i] = (p[i]+r[i])*4+q[i]*9;
        }

        int P,Q,R,C;
        cin >> P >> Q >> R >> C;
        
        int count = 0;
        for(int i=0;i<n;i++){
            if(p[i]<=P && q[i]<=Q && r[i]<=R && c[i]<=C){
                cout << s[i] << endl;
                count ++;
            }
        }
        if(count==0) cout << "NA" << endl;
    }

    return 0;
}
accuracy: 1
time_ms: 10
memory_kb: 3452
final_rank: 13

code_snippet: #include <bits/stdc++.h>
using namespace std;
int main(void){
	int n,s[1001],p[1001],q[1001],r[1001],i,pp,qq,rr,cc,flg;
	while(1){
		cin>>n;
		flg=0;
		if(n==0) break;
		for(i=0;i<n;i++) cin>>s[i]>>p[i]>>q[i]>>r[i];
		cin>>pp>>qq>>rr>>cc;
		for(i=0;i<n;i++){
			if(p[i]<=pp && q[i]<=qq && r[i]<=rr && p[i]*4+q[i]*9+r[i]*4<=cc){
				flg=1;
				cout<<s[i]<<endl;
			}
		}
		if(flg==0) cout<<"NA"<<endl;
	}
	return 0;
}
accuracy: 1
time_ms: 10
memory_kb: 3448
final_rank: 12

code_snippet: #include<bits/stdc++.h>
using namespace std;
#define kai "\n"
#define mo return 0
long long gcd(long long a,long long b){
     if(a%b==0){
    return b;
    }else{
    return gcd(b,a%b);
  }
}
long long lcm(long long a,long long b){
    return a/gcd(a,b)*b;
}
int main(){
  for(int _=0;_<100;_++){
    int n;
    cin>>n;
    if(n==0){
      mo;
    }
    int s[n],p[n],q[n],r[n];
    for(int i=0;i<n;i++){
      cin>>s[i]>>p[i]>>q[i]>>r[i];
    }
    int P,Q,R,C;
    cin>>P>>Q>>R>>C;
    bool no=true;
    for(int i=0;i<n;i++){
      long long ke=p[i]*4+9*q[i]+4*r[i];
      if(p[i]<=P&&q[i]<=Q&&r[i]<=R&&ke<=C){
       cout<<s[i]<<kai;
       no=false;
     }
    }
    if(no){
      cout<<"NA\n";
    }
  }

  mo;
}
accuracy: 1
time_ms: 10
memory_kb: 3104
final_rank: 2

code_snippet: #include <bits/stdc++.h>
using namespace std;
using ll=long long;
using ull=unsigned long long;
#define REP(i,x) for(int i=0;i<(int)(x);i++)
#define REP1(i,x) for(int i=1;i<=(int)(x);i++)
#define REP2(i,s,e) for(int i=(int)(s);i<=(int)(e);i++)
#define RREP(i,x) for(int i=((int)(x)-1);i>=0;i--)
#define RREP1(i,x) for(int i=((int)(x));i>=1;i--)
#define RREP2(i,s,e) for(int i=((int)(e));i>=(int)(s);i--)
#define ALL(x) (x).begin(),(x).end()
#define INF (1'000'001'000)

int main() {
  int n, P, Q, R, C;
  while (cin >> n) {
    if (n == 0) break;
    vector<int> s(n), p(n), q(n), r(n);
    REP(i, n) {
      cin >> s[i] >> p[i] >> q[i] >> r[i];
    }
    cin >> P >> Q >> R >> C;
    vector<int> ans;
    REP(i, n) {
      if ((p[i] <= P) && (q[i] <= Q) && (r[i] <= R) && (4*(p[i]+r[i])+9*q[i] <= C)) {
        ans.push_back(s[i]);
      }
    }
    if (ans.size() == 0) {
      cout << "NA" << endl;
    } else {
      REP(i, ans.size()) {
        cout << ans[i] << endl;
      }
    }
  }
  return 0;
}
accuracy: 1
time_ms: 10
memory_kb: 3372
final_rank: 9

code_snippet: #include <bits/stdc++.h>
using namespace std;
using ll=long long;
using ull=unsigned long long;
#define REP(i,x) for(int i=0;i<(int)(x);i++)
#define REP1(i,x) for(int i=1;i<=(int)(x);i++)
#define REP2(i,s,e) for(int i=(int)(s);i<=(int)(e);i++)
#define RREP(i,x) for(int i=((int)(x)-1);i>=0;i--)
#define RREP1(i,x) for(int i=((int)(x));i>=1;i--)
#define RREP2(i,s,e) for(int i=((int)(e));i>=(int)(s);i--)
#define ALL(x) (x).begin(),(x).end()
#define INF (1'000'001'000)

int main() {
  int n, P, Q, R, C;
  while (cin >> n) {
    if (n == 0) break;
    vector<int> s(n), p(n), q(n), r(n);
    REP(i, n) {
      cin >> s[i] >> p[i] >> q[i] >> r[i];
    }
    cin >> P >> Q >> R >> C;
    vector<int> ans;
    REP(i, n) {
      if ((p[i] <= P) && (q[i] <= Q) && (r[i] <= R) && (4*(p[i]+r[i])+9*q[i] <= C)) {
        ans.push_back(s[i]);
      }
    }
    if (ans.size() == 0) {
      cout << "NA" << endl;
    } else {
      sort(ALL(ans));
      REP(i, ans.size()) {
        cout << ans[i] << endl;
      }
    }
  }
  return 0;
}
accuracy: 0.25
time_ms: 10
memory_kb: 3352
final_rank: 19

code_snippet: #include<bits/stdc++.h>
using namespace std;
int main(){
   //ios::sync_with_stdio(false);
//   cin.tie(nullptr);

   for(int x=0;x<=110;x++){
    int n;
    int cnt = 0;
    cin >> n;
    if(n==0)break;
    int S[1100],P[1100],Q[1100],R[1100],C[1100];
    for(int a=1;a<=n;a++){
        cin >> S[a] >> P[a] >> Q[a] >> R[a];
        C[a] = (P[a]+R[a])*4+Q[a]*9;
    }
    int p,q,r,c;
    cin >> p >> q >> r >> c;
    for(int f=1;f<=n;f++){
        if(P[f]<=p&&Q[f]<=q&&R[f]<=r&&C[f]<=c){
            cout << S[f] << endl;
            cnt++;
        }
    }
	if(cnt==0)cout << "NA" << endl;
   }
}
accuracy: 1
time_ms: 20
memory_kb: 3020
final_rank: 14

code_snippet: #include <iostream>
using namespace std;
int main(void){
    int i, n, P, Q, R, C;
    while (true) {
        cin >> n;
        if (n == 0) break;
        int s[n], p[n], q[n], r[n], Possible[n];
        int calorie = 0;
        bool flag = true;
        for (i = 0; i < n; i++) {
            cin >> s[i] >> p[i] >> q[i] >>  r[i];
        }
        cin >> P >> Q >> R >> C;
        for (i = 0; i < n; i++) {
            calorie = 4 * p[i] + 9 * q[i] + 4 * r[i];
            if (p[i] <= P && q[i] <= Q && r[i] <= R && calorie <= C) {
                cout << s[i] << endl;
                flag = false;
            }
        }
        if (flag) cout << "NA" << endl;
        
        
    }
    
}
accuracy: 1
time_ms: 10
memory_kb: 3108
final_rank: 3

code_snippet: #include <iostream>
using namespace std;
int main(void){
    int i, n, P, Q, R, C;
    while (cin >> n) {
        int s[n], p[n], q[n], r[n], Possible[n];
        int calorie = 0;
        bool flag = false;
        for (i = 0; i < n; i++) {
            cin >> s[i] >> p[i] >> q[i] >>  r[i];
        }
        cin >> P >> Q >> R >> C;
        for (i = 0; i < n; i++) {
            calorie = 4 * p[i] + 9 * q[i] + 4 * r[i];
            if (p[i] <= P && q[i] <= Q && r[i] <= R && calorie <= C) {
                cout << s[i] << endl;
                flag = true;
            }
        }
        if (flag == false && n != 0) cout << "NA" << endl;
        
        
    }
    
}
accuracy: 1
time_ms: 10
memory_kb: 3120
final_rank: 5

code_snippet: #include <bits/stdc++.h>
using namespace std;
#define ll long long
#define gcd(x,y) __gcd(x,y) //最大公約数
#define lcm(x,y) x/(__gcd(x,y))*y //最小公倍数

int main() {
    while (1) {
        int n;
        cin >> n;
        if (n == 0) {
            break;
        }
        int data[n][4];
        int limit[4];
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < 4; j++) {
                cin >> data[i][j];
            }
        }
        for (int i = 0; i < 4; i++) {
            cin >> limit[i];
        }
        bool check = true;
        for (int i = 0; i < n; i++) {
            if (data[i][1] <= limit[0] && data[i][2] <= limit[1] && data[i][3] <= limit[2] && data[i][1] * 4 + data[i][2] * 9 + data[i][3] * 4 <= limit[3]) {
                cout << data[i][0] << "\n";
                check = false;
            }
        }
        if (check) {
            cout << "NA\n";
        }
    }
    return(0);
}
accuracy: 1
time_ms: 10
memory_kb: 3112
final_rank: 4

code_snippet: #include<iostream>
#include<queue>

using namespace std;

struct food {
    int s;
    int p;
    int q;
    int r;
    int c;

    food() {
        cin >> s >> p >> q >> r;
        c = p * 4 + q * 9 + r * 4;
    }

    bool Nut_Is_OK(int P, int Q, int R, int C) {
        return (p <= P && q <= Q && r <= R && c <= C);
    }
};

int main(void) {
    int n;
    queue<food> foods;
    int S, P, Q, R, C;

    for (int d = 0; d < 100; d++) {
        // nの受け取り
        cin >> n;
        if (cin.eof() || n == 0) return 0;

        // n個の構造体food[n]の読み込みとカロリー計算
        for (int i = 0; i < n; i++) {
            food latest_read;
            // cerr << latest_read.s << " " << latest_read.p << " " << latest_read.q << " " << latest_read.r << " " << latest_read.c << endl;
            foods.push(latest_read);
        }

        // 判定部
        cin >> P >> Q >> R >> C;

        bool OKfood_is_nothing = false; // true -> falseに修正
        for (int i = 0; i < n; i++) {
            if (foods.front().Nut_Is_OK(P, Q, R, C)) {
                cout << foods.front().s << endl;
                foods.pop();
                OKfood_is_nothing = true; // false -> trueに修正
                break; // 一つの食品が見つかったら、ループを終了します
            }
            else foods.pop();
        }
        if (!OKfood_is_nothing) cout << "NA" << endl; // true -> falseに修正

        while (!foods.empty()) foods.pop();
    }

    return 0;
}
accuracy: 0.25
time_ms: 10
memory_kb: 3084
final_rank: 17

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

struct A {
  int s, p, q, r, c;
};

int main() {
  int n;
  while (cin >> n, n) {
    A a;
    vector<A> v;
    for (int i = 0; i < n; i++) {
      cin >> a.s >> a.p >> a.q >> a.r;
      a.c = 4 * a.p + 9 * a.q + 4 * a.r;
      v.emplace_back(a);
    }
    int P, Q, R, C;
    cin >> P >> Q >> R >> C;
    bool f = true;
    for (auto& e : v) {
      if (e.p <= P && e.q <= Q && e.r <= R && e.c <= C) {
        f = false;
        cout << e.s << "\n";
      }
    }
    if (f) cout << "NA\n";
  }
  return 0;
}
accuracy: 1
time_ms: 10
memory_kb: 3388
final_rank: 10

code_snippet: #include <bits/stdc++.h>
using namespace std;
int main(){
    while(1){
        int n,s[1001],p[1001],q[1001],r[1001],c[1001],P,Q,R,C,sum=0;
        cin >> n;
        if(n==0){
            break;
        }
        for(int i=0; i<n; i++){
            c[i]=0;
        }
        for(int i=0; i<n; i++){
            cin >> s[i] >> p[i] >> q[i] >> r[i];
            c[i]+=(p[i]*4)+(q[i]*9)+(r[i]*4);
        }
        cin >> P >> Q >> R >> C;
        for(int i=0; i<n; i++){
            if((p[i]<=P)&&(q[i]<=Q)&&(r[i]<=R)&&(c[i]<=C)){
                cout << s[i] << endl;
                sum+=1;
            }
        }
        if(sum==0){
            cout << "NA" << endl;
        }
    }
}
accuracy: 1
time_ms: 10
memory_kb: 3092
final_rank: 1

code_snippet: #include <bits/stdc++.h>
using namespace std;
int main(void){
int a,b,c,d,e,f;
vector<vector<int> > snack(5,vector<int> (1000));
while (true){
    cin>>a;
    if(a==0){
        break;
    }
    for(int i=0;i<a;i+=1){
        cin>>snack.at(0).at(i)>>snack.at(1).at(i)>>snack.at(2).at(i)>>snack.at(3).at(i);
    snack.at(4).at(i)=(snack.at(3).at(i)+snack.at(1).at(i))*4+snack.at(2).at(i)*9;
    }
    cin>>b>>c>>d>>e;
    f=0;
    for(int i=0;i<a;i+=1){
        if(!(b<snack.at(1).at(i)||c<snack.at(2).at(i)||d<snack.at(3).at(i)||e<snack.at(4).at(i))){
            cout<<snack.at(0).at(i)<<endl;
            f+=1;
        }
    }
    if(f==0){
        cout<<"NA"<<endl;
    }
}
}
accuracy: 1
time_ms: 10
memory_kb: 3132
final_rank: 6

code_snippet: #include<bits/stdc++.h>
using namespace std;
int main(void){
    while(1){
        int n;
        cin>>n;
        if(n==0){
            return 0;
        }else{
            int s[n],p[n],q[n],r[n],c[n];
            for(int i=0;i<n;i++){
                cin>>s[i]>>p[i]>>q[i]>>r[i];
                c[i]=p[i]*4+q[i]*9+r[i]*4;
            }
            int P,Q,R,C;
            cin>>P>>Q>>R>>C;
            vector<int> v;
            for(int i=0;i<n;i++){
                if(p[i]<=P && q[i]<=Q && r[i]<=R && c[i]<=C){
                    v.push_back(s[i]);
                }
            }
            if(v.size()-0==0){
                cout<<"NA"<<endl;
            }else{
                for(int i=0;i<v.size();i++){
                    cout<<v[i]<<endl;
                }
            }
        }
    }
}
accuracy: 1
time_ms: 10
memory_kb: 3200
final_rank: 8

code_snippet: #include<bits/stdc++.h>
using namespace std;
int main(void){
    while(1){
        int n;
        cin>>n;
        if(n==0){
            return 0;
        }else{
            int s[n],p[n],q[n],r[n],c[n];
            for(int i=0;i<n;i++){
                cin>>s[i]>>p[i]>>q[i]>>r[i];
                c[i]=p[i]*4+q[i]*9+r[i]*4;
            }
            int P,Q,R,C;
            cin>>P>>Q>>R>>C;
            vector<int> v;
            for(int i=0;i<n;i++){
                if(p[i]<=P && q[i]<=Q && r[i]<=R && c[i]<=C){
                    v.push_back(s[i]);
                }
            }
            if(v.size()-0==0){
                cout<<"NA"<<endl;
            }else{
                sort(v.begin(),v.end());
                for(int i=0;i<v.size();i++){
                    cout<<v[i]<<endl;
                }
            }
        }
    }
    return 0;
}
accuracy: 0.25
time_ms: 20
memory_kb: 3204
final_rank: 20

code_snippet: #include<iostream>
#include<algorithm>
#include<map>
#include<queue>
#include<stack>
#include<set>
#include<bitset>
#include<vector>
#include<string>
#include <iomanip>
#include <deque>
#include<list>
#define rep(i,n) for(int i=0;i<(n);i++)
using namespace std;
using ll=long long;
using P=pair<int,int>;
using P_S=pair<int,string>;
using P_D=pair<double,int>;
using T=tuple<int,int,char,ll,string>;

struct food{
    int num;
    int a;
    int b;
    int c;
    int d;
};

int main()
{
    while(1){
        int N;
        cin>>N;
        if(N==0) break;
        vector<food> F(N);      
        rep(i,N){
            cin>>F[i].num>>F[i].a>>F[i].b>>F[i].c;
            F[i].d=F[i].a*4+F[i].b*9+F[i].c*4;
        }
        int P,Q,R,C;
        cin>>P>>Q>>R>>C;
        vector<int> ans;
        rep(i,N){
            if(F[i].a<=P&&F[i].b<=Q&&F[i].c<=R&&F[i].d<=C) ans.push_back(F[i].num);
        }
        if(ans.empty()) cout<<"NA"<<endl;
        else{
            rep(i,ans.size()) cout<<ans[i]<<endl;
        }
    }
}
accuracy: 1
time_ms: 10
memory_kb: 3136
final_rank: 7

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

int main(){
  for(;;){
    int n;
    cin >> n;
    if(n == 0) break;
    vector<vector<long long int> > vec(n,vector<long long int>(4));
    for(int i=0;i<n;i++) for(int j=0;j<4;j++) cin >> vec[i][j];
    long long int P,Q,R,C;
    cin >> P >> Q >> R >> C;
    bool flag = false;
    for(int i=0;i<n;i++){
      if(vec[i][1] <= P && vec[i][2] <= Q && vec[i][3] <= R && vec[i][1]*4+vec[i][2]*9+vec[i][3]*4 <= C){
        flag = true;
        cout << vec[i][0] << endl;
      }
    }
    if(!flag) cout << "NA" << endl;
  }
}
accuracy: 1
time_ms: 20
memory_kb: 3212
final_rank: 16

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

int main(){
  for(;;){
    int n;
    cin >> n;
    if(n == 0) break;
    vector<vector<long long int> > vec(1000,vector<long long int>(3,1000000000));
    for(int i=0;i<n;i++){
      int s;
      long long int p,q,r;
      cin >> s >> p >> q >> r;
      s--;
      vec[s][0] = p;
      vec[s][1] = q;
      vec[s][2] = r;
    }
    long long int P,Q,R,C;
    cin >> P >> Q >> R >> C;
    bool flag = false;
    for(int i=0;i<1000;i++){
      if(vec[i][0] <= P && vec[i][1] <= Q && vec[i][2] <= R && vec[i][0]*4+vec[i][1]*9+vec[i][2]*4 <= C){
        flag = true;
        cout << i+1 << endl;
      }
    }
    if(!flag) cout << "NA" << endl;
  }
}
accuracy: 0.25
time_ms: 10
memory_kb: 3196
final_rank: 18

code_snippet: #include<iostream>
#include<string>
#include<vector>
#include<stack>
#include<queue>
#include<set>
#include<map>
#include<list>
#include<algorithm>
#include<numeric>
#include<cmath>
#include<iomanip>
#include<regex>
#include<random>
using namespace std;
#define int long long
#define uint unsigned long long
const int mod=1e9+7;
const int inf=mod*mod;
const double eps=1e-9;
signed main(){
	int n,s[1000],p[1000],q[1000],r[1000],c[1000],P,Q,R,C;
	while(cin>>n,n){
		for(int i=0;i<n;i++){
			cin>>s[i]>>p[i]>>q[i]>>r[i];
			c[i]=p[i]*4+q[i]*9+r[i]*4;
		}
		cin>>P>>Q>>R>>C;
		bool ok=0;
		for(int i=0;i<n;i++){
			if(p[i]<=P&&q[i]<=Q&&r[i]<=R&&c[i]<=C){
				cout<<s[i]<<endl;
				ok=1;
			}
		}
		if(!ok)
			cout<<"NA"<<endl;
	}
}
accuracy: 1
time_ms: 10
memory_kb: 3392
final_rank: 11