頭良くなりたい人

文系大学生shadeのブログです。競技プログラミングや人文学の話題,受験ネタなど。

ABC151 C - Welcome to AtCoder

問題はこちら atcoder.jp

方針

i に対して,

if 問題P[i]がAC済{
    continue
}else{
    if 提出iがAC{
        正解数++
        ペナルティ数+=問題P[i]のWA数
    }else{
        問題P[i]のWA数++
    }
}

という操作を行います。

コード

#include <bits/stdc++.h>
using namespace std;
#define REP(i,n) for(int i=0; i<(n); i++)
 
int main(){
    int n,m;
    cin>>n>>m;
 
    vector<int> p(m);
    vector<string> s(m);
    REP(i,m){
        cin>>p[i]>>s[i];
    }
 
    vector<bool> judge(n);
    vector<int> wa(n);
    int numC=0,penalty=0;
 
    REP(i,m){
        if(judge[p[i]-1]){
            continue;
        }else{
            if(s[i]=="AC"){
                numC++;
                penalty+=wa[p[i]-1];
                judge[p[i]-1]=true;
            }else{
                wa[p[i]-1]++;
            }
        }
    }
 
    cout<<numC<<" "<<penalty<<endl;
}