chacoderのブログ

競技プログラミングそのほか

2010年 日本情報オリンピック春合宿OJ contest - コンテスト (Contest)

問題文

https://www.ioi-jp.org/camp/2010/2010-sp-tasks/2010-sp-day4_23.pdf

コンテストの得点システムのシミュレーションです。

考察

一見して面倒そうだなと思いましたが丁寧に実装していくと難しいところもなくできました。

いろいろなテーブルをつくるので混乱しないよう最初にしっかり設計するのが大切だと思いました。

提出コード

#include <bits/stdc++.h>
using namespace std;

int P[11];//各問題の得点
int S[1010][11];//閲覧時刻
int W[1010][11];//誤答数
int E[1010][11];//正解時刻
int NP[1010];//参加者の得点

int main(){
  int N,M,T,X,Y;
  cin>>N>>M>>T>>X>>Y;
  
  //得点入力
  for(int i=0;i<M;i++){
    cin>>P[i];
  }
  
  int t,n,m;
  string s;

  //入力
  for(int i=0;i<Y;i++){

    cin>>t>>n>>m>>s;
    n--;
    m--;
    //cout<<"#"<<i<<" "<<t<<" "<<n<<" "<<m<<" "<<s<<endl;
    if(s=="open"){
      S[n][m]=t;
    }
    if(s=="incorrect"){
      W[n][m]++;
    }
    if(s=="correct"){
      E[n][m]=t;
      NP[n]+=max(X,P[m]-(E[n][m]-S[n][m])-120*W[n][m]);
      //cout<<i<<" "<<n<<" "<<NP[n]<<endl;
    }
  }
  for(int i=0;i<N;i++){
    cout<<NP[i]<<endl;
  }
  return 0;
}