Official
C - 最速正解者/Fastest Answer Editorial by mechanicalpenciI
いくつか解く方法はありますが、比較的単純な方法の\(1\)つは以下のような方法です。
最初に最速正解者のIDをいれる配列 \(fa[i]\) を \(0\) で初期化して用意しておきます。
そして、 \(2\) 行目から \(N+1\) 行目の問題番号 \(P_i\) と判定結果 \(V_i\) \((1\leq i\leq N)\) を順に見ていき、\(V_i\) が AC
かつ \(fa[P_i]\) が \(0\) ならば、 \(fa[P_i]\) に \(i\) を代入するという事を行えばよいです。
今回、すべての問題に AC
が存在する事が保証されているので、最速正解者が存在したかなどの判定を行う必要はなく、最後に \(fa[i]\) を改行区切りで \(6\) 行出力すればよいです。
C++による実装例:
#include <bits/stdc++.h>
using namespace std;
int main(void) {
int n, k;
int fa[6] = {};
string prob, verd;
cin >> n;
for (int i = 0; i < n; i++) {
cin >> prob >> verd;
k = (int)(prob[0] - 'A');
if ((fa[k] == 0) && (verd == "AC")) fa[k] = i + 1;
}
for (int i = 0; i < 6; i++) cout << fa[i] << endl;
return 0;
}
posted:
last update: