Contest(コンテスト) - joi2010-day4

出典: 第9回日本情報オリンピック 春季トレーニング合宿

時間制限: 1秒

メモリ制限: 64MB

世の中には様々なプログラミングコンテストがある. 例えば, 情報オリンピック, ACM-ICPC, ICFPの様に世界中の相手と競い合う物や, Supercomputing Contest, パソコン甲子園, EPOCH@まつやまの国内大会などなど, 枚挙にいとまがない.

そのようなコンテストに参加していると自分でコンテストを開催したいと考える人もあらわれる. あなたの友人もそんな一人である. 友人はコンテストの問題準備に忙しく, コンテストのログから参加者の得点を計算するプログラムの作成をあなたに依頼してきた. 是非とも友人のコンテストが成功するように, 間違いのない得点計算プログラムを作ってあげて欲しい.

コンテストの参加者はN人で, 問題がM問で, 競技時間がT秒である. 参加者には1からNまでの番号が割り振られている. 問題にも1からMまでの番号が振られている.

このコンテストでは, 各参加者は問題毎に, 問題文を閲覧し, 問題を解き, 解答のソースコードを提出する. 競技は時刻0からはじまり, 時刻Tで終了する. 参加者が問題を閲覧すると, 時刻と参加者番号と問題番号がログに1件の情報として記録される. 参加者が解答ソースコードを提出すると, 時刻と参加者番号と問題番号と解答ソースコードの正誤がログに1件の情報として記録される.

各参加者はコンテスト開始から1秒毎に「ある問題を閲覧する」か「ある問題のソースコードを提出する」のいずれかを1回行うことが出来る. 閲覧前にその問題のソースコードを提出する事や, 正解後に再度ソースコードを提出する事は出来ない.

参加者jが問題iを, 時刻S[i,j]に閲覧し, w[i,j]回の不正解のソースコードを提出後, 時刻E[i,j]に正解のソースコードを提出したときの得点は,
(p[i] – (E[i,j] – S[i,j] – 120w[i,j])とX のうち大きい方)
である. ただし, p[i]は問題iの配点, Xは問題番号に依存しない正解した時の最低得点である.

競技終了までに, 正解しなかった問題の得点は0点である.

各参加者の得点は, その参加者の問題毎の得点の合計である.

課題(TASK)

N, M, T, X, ログに含まれる情報の件数, 各問題の配点, および, ログの内容が与えられたときに各参加者の得点を計算するプログラムを作成せよ.

制限(CONSTRAINTS)

1 ≤ N ≤ 1,000 参加者数
1 ≤ M ≤ 10 問題数
100 ≤ T ≤ 10,000 コンテストの競技時間
1 ≤ X ≤ 100 正解問題の最低得点
0 ≤ Y ≤ 10,000 ログに含まれる情報の件数
X ≤ p[i] ≤ T 問題iの配点
0 ≤ t1 ≤ t2 ≤ … ≤ t[k] ≤ … ≤ t[Y] ≤ T ログのk番目の情報が記録された時刻を表す整数
1 ≤ n[k] ≤ N ログのk番目の情報に含まれる参加者番号
1 ≤ m[k] ≤ M ログのk番目の情報に含まれる問題番号

入力(INPUT)

標準入力から以下の入力を読み込め.

出力(OUTPUT)

標準出力に以下のデータを出力せよ.

入出力例(EXAMPLE)

入力例(Sample Input) 出力例(Sample Output)
1 3 1200 30 8
50
1000
800
0 1 1 open
100 1 2 open
400 1 1 correct
500 1 2 incorrect
600 1 2 correct
700 1 3 open
800 1 3 incorrect
900 1 3 incorrect
410

1番の参加者は, 1問目で30点, 2問目で380点, 3問目で0点を獲得する. 2問目の得点は 1000[問題2の配点] – ( 600[正解時刻] – 100[閲覧時刻] ) – 120 × 1[不正解, 1回] で計算される.

入力例(Sample Input) 出力例(Sample Output)
3 2 1000 10 10
878
712
0 2 1 open
0 1 1 open
0 3 1 open
100 3 1 correct
100 2 1 correct
100 1 2 open
200 2 2 open
200 1 2 incorrect
300 1 2 correct
300 2 2 correct
392
1390
778

参加者が複数の場合, 同じ時刻に複数の情報が記録されている場合がある.