はじめに
- 問題: http://yukicoder.me/problems/550
言語はC++
23時ごろ、帰ってきてA問題を見る(コンテスト終了時刻は23:20)。
- A問題は解けそうだからこれだけ解こー
- まさかのハマり、時間内に答えられず
通らなかったコード
- http://yukicoder.me/submissions/29008
score[0]
が自分のスコアになるので、それと他のスコア比較すればいい
#define int(n) int n; cin >> n; int main(int argc, const char * argv[]){ int n, a[100], b[100]; cin >> n; REP(i,n) cin >> a[i]; REP(i,n) cin >> b[i]; int score[101]; REP(i,n+1) score[i] = 0; REP(i,n) score[b[i]] += a[i]; for(int i = 1; i <= n; i++){ if(score[0] < score[i]){ cout << "NO" << endl; return 0; } } cout << "YES" << endl; }
なぜハマったのか
ユーザーが5人だったら、ユーザー番号は1〜5だと思い込んでいた!(実際は違った)
通ったコード
#define int(n) int n; cin >> n; int main(int argc, const char * argv[]){ int n, a[100], b[100]; cin >> n; REP(i,n) cin >> a[i]; REP(i,n) cin >> b[i]; int score[101]; REP(i,101) score[i] = 0; REP(i,n) score[b[i]] += a[i]; for(int i = 1; i < 101; i++){ if(score[0] < score[i]){ cout << "NO" << endl; return 0; } } cout << "YES" << endl; }