AOJ 2400: You Are the Judge

問題

You Are the Judge | Aizu Online Judge

提出ログから求まる順位の順に、ID・正解数・ペネルティを表示せよ

方針

AOJ 1187: ICPC Ranking - はやくプロになりたいとほぼ同じ

コード

#include <bits/stdc++.h>
using namespace std;
#define rep(i, n) for(int i=0; i<(n); ++i)
class status {
public:
    int miss[11], solve, time, id;
    bool operator<(const status & rhs) const{
        if(solve > rhs.solve) return true;
        else if(solve==rhs.solve && time < rhs.time) return true;
        else if(solve==rhs.solve && time == rhs.time && id < rhs.id) return true;
        return false;
    }
};

status a[51];

int main(void){
    int T, P, R;
    int team, prob, time;
    string msg;
    while(cin >> T >> P >> R && T) {
        rep(i, 52) {
            a[i].solve = a[i].time = 0;
            a[i].id = i+1;
            rep(j, 11) a[i].miss[j] = 0;
        }
        rep(i, R) {
            cin >> team >> prob >> time >> msg;
            team--;
            if(msg == "CORRECT") {
                a[team].solve++;
                a[team].time += a[team].miss[prob]*1200+time;
            } else {
                a[team].miss[prob]++;
            }
        }
        sort(a, a+T);
        rep(i, T) cout << a[i].id << " "<<  a[i].solve << " " << a[i].time << endl;
    }
}

http://judge.u-aizu.ac.jp/onlinejudge/review.jsp?rid=1902008

反省

演算子オーバーロードを何も見ずに書けるようにならねば。