[AtCoder] ABC 151 C – Welcome to AtCoder

2020年12月15日

問題

方針

\( i \) 番目の問題を正解したかどうかという情報と \( i \) 番目の問題を初めて正解するまでに “WA" となった個数を数えれば良いです。これは、配列で管理することができます。

コード

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main() {
    int N, M;
    cin >> N >> M;
    int p[M];
    string S[M];
    for (int i = 0; i < M; i++) {
        cin >> p[i] >> S[i];
        p[i]--;
    }
    int flag[N]{};
    int k[N]{};
    for (int i = 0; i < M; i++) {
        if (flag[p[i]] == 0) {
            if (S[i] == "WA") {
                k[p[i]]++;
            } else {
                flag[p[i]] = 1;
            }
        }
    }
    int t1 = 0;
    int t2 = 0;
    for (int i = 0; i < N; i++) {
        if (flag[i] == 1) {
            t1++;
            t2 += k[i];
        }
    
    }
    cout << t1 << " " << t2 << "\n";
    return 0;
}