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を見て初めて題意を理解した
作問者が反省するべき