寝癖頭の解法

学習中の覚え書きを投稿、更新していきます。

Aizu Online Judge in C++ #Volume2 - 0239 : Calorie Counting

Aizu Online Judge(AOJ)の過去問から、その提出コードの解答例です。

・問題 "Calorie Counting"
https://onlinejudge.u-aizu.ac.jp/problems/0239
食べ物には3大栄養素と呼ばれる「たんぱく質」「脂質」「炭水化物」の3つの栄養素が含まれています。
分類の対象となるお菓子の個数 n と各お菓子の情報、制限の情報を入力とし、そのお菓子一つだけなら制限を超えることがない(食べてもよい)お菓子の一覧を出力するプログラムを作成してください。
食べてもよいお菓子の一覧は、食べてもよいお菓子の番号を入力順に出力してください。
なお、食べてもよいお菓子がなければ”NA”と出力してください。

僕が作成、提出したコードは、以下のとおりです。

Aizu Online Judge in C++ #Volume2 - 0239 : Calorie Counting
/*
Aizu Online Judge in C++ #Volume2 - 0239 : Calorie Counting
https://onlinejudge.u-aizu.ac.jp/problems/0239
 提出コードの解答例
 https://neguse-atama.hatenablog.com
*/
#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;
                }
            }
        }
    }
}

設問の出典は、プログラミング問題のオンライン採点システム「Aizu Online Judge(AOJ)」です。
http://judge.u-aizu.ac.jp/onlinejudge/