読者です 読者をやめる 読者になる 読者になる

SRM 546 Div2 Easy ContestWinner

問題

プログラミングコンテストで問題を各競技者がサブミットしたlogをもらう.
一番多く問題を解き,かつ最後の問題を最初にsubmitした競技者を返す.

解答

各競技者の問題を解いた数,最後の問題を解いた時刻を計算する.
後は条件に合う競技者を見つけるだけ.

class ContestWinner
{
public:
  int getWinner(vector <int> events)
    {
      int n = events.size();
      vector<int> last_solved(n);
      vector<int> num_solved(n);
      int i, j;
      int res=0;
      for(i = 0; i < n; i++){
        last_solved[i] = i;
        num_solved[i] = 1;
        for(j = i + 1; j < n; j++){
          if (events[i] == events[j]){
            num_solved[i]++;
            last_solved[i] = j;
          }
        }
        if (num_solved[res] < num_solved[i] || (num_solved[res] == num_solved[i] && last_solved[res] > last_solved[i])){
            res = i;
        }
      }
      return events[res];
    }
};