AOJ 0100: Sale Result

問題

Sale Result | Aizu Online Judge

総売上が1,000,000以上の従業員のIDを入力順に表示せよ

どう考えても悪問だった

方針

  • 問題文には明示されていないが、同じ従業員の売上記録が複数回与えられることがあるのでmapで保持しておく
  • 問題文には明示されていないが、入力順とは最初にその従業員のIDが出現した順番らしいので順番も別途保持しておく
  • 入力がでかいのでlong long intを使う

コード

#include <bits/stdc++.h>
using namespace std;
#define rep(i, n) for(int i=0; i<(n); ++i)

int main(void){
    int n, i;
    long long int p, q;
    map<int, long long int> emp;
    vector<int> seq;
    while(cin >> n && n) {
        bool isExist = false;
        emp.clear();
        seq.clear();
        rep(l, n) {
            cin >> i >> p >> q;
            if(!emp[i]) seq.push_back(i);
            emp[i]+=p*q;
        }
        rep(i, seq.size()) {
            if(emp[seq[i]] >= 1000000) {
                cout << seq[i] << endl;
                isExist = true;
            }
        }
        if(!isExist) cout << "NA" << endl;
    }
}

http://judge.u-aizu.ac.jp/onlinejudge/review.jsp?rid=1899633

反省

問題文に明示されてない制約が多すぎぃ!

ttp://d.hatena.ne.jp/kyuridenamida/20100809/1281336535を見て初めて題意を理解した

作問者が反省するべき