아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

コンテスト (Contest)

면접 대비

시간 제한1초메모리 제한1024 MB

요약
open, correct, incorrect 사건이 시간 순으로 주어진 로그에서 각 참가자의 문제별 점수를 정해진 시간과 오답 감점 식으로 계산해 합계를 구한다.
난이도

보통10점 중 5점

유형
구현, 시뮬레이션, 배열, 수학
정답자
아직 제출이 없습니다

문제

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

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

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

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

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

参加者 j が問題 i を,時刻 Sij に閲覧し,wij 回の不正解のソースコードを提出後,時刻 Eij に正解のソー スコードを提出したときの得点は,

(pi − (Eij − Sij) − 120wij) と X のうち大きい方

である.ただし,pi は問題 i の配点,X は問題番号に依存しない正解した時の最低得点である.

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

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

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

입력

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

  • 1 行目には,参加者数 N,問題数 M,競技時間 T,正解問題の最低得点 X,ログの件数 Y が空白を区 切りとして書かれている.
  • 続く M 行のうち i 行目には,問題 i の得点を表す整数 pi が書かれている.
  • 続く Y 行はログの内容を表す.それらのうちの k 行目にはログの k 番目の情報が書き込まれており, その情報が記録された時刻を表す整数 tk,参加者番号を表す整数 nk,問題番号を表す整数 mk,およ び “open” , “correct” , “incorrect” のいずれかの文字列が空白区切りで書かれている. “open” は問題を閲覧したことを表す.“correct” は提出したソースコードが正解であったことを表す. “incorrect” は提出したソースコードが不正解であったことを表す.

출력

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

  • データは N 行からなり,j 行目は j 番の参加者の得点を含む.

제한

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

예제2

  1. 예제 1

    입력
    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
    
  2. 예제 2

    입력
    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