Login with GitHub. Nope?
修正 C++ 的程式碼在使用一定量動態記憶體後會產生 RF 的問題 @ 2019/12/6 4:45pm NeoHOJ 強勢復活中 (Open beta)
Submit  Ranklist

Problem : 266 - POI

Problem Statistics

Solved Member: 36  Submission: 135  User Tried: 39

Statement:

普羅夫迪夫信息學奧賽的比賽規則與眾不同。有N個參賽選手和T個題目,每個題目只有一個測試點,因此,對於每個參賽選手來說,他們的每個題目只可能有2種結果:解出或者沒有解出,沒有任何一個題目有部分得分。

每個題目的分數在比賽結束後才決定,分數等於沒有解出該題目的所有選手的人數。每個選手的得分等於他們解出的題目的分數之總和。

Philip參加了比賽,但是他被複雜的計分規則搞暈了,看著比賽結果卻無法知道自己最後的排名。

請你寫一個程序幫助Phi​​lip計算他的得分和排名。

比賽之前,分配給每個選手一個唯一的ID(從1到N)。 Philip的ID是P。比賽的最後排名按選手得分的降序排列,得分相同的情況下,解出題目多的選手排在解出題目少的選手之前,得分相同並且解出題目也相同的情況下,按照選手ID的升序排列(由小到大)。

Task:

給定每個選手的解題情況,請你寫程序計算Philip的得分以及他在最終排名中的名次。

Input:Output:

第一行包含整數N,T和P,每兩個整數之間用一個空格隔開。

接下來的N行描述了選手的解題情況,其中的第k行描述了ID為k的選手的解題情況。第k行包含T個整數,分別以空格隔開,其中第一個整數表示選手k是否解出了第一個題目,第二個整數表示選手k是否解出了第二個題目,依此類推。這T個整數均為0或者1,1表示選手k解出了相應的題目,而0表示選手k沒有解出該題目。

1 ≤ N ≤ 2000,表示參賽者人數。
1 ≤ T ≤ 2000,表示題目數。
1 ≤ P ≤ N,表示Philip的代號。
你的程式需要向標準輸出寫入一行,包含以空格隔開的2個整數。第一個整數表示Philip在POI比賽中的得分,第二個整數表示Philip在最終排名中的名次,該名次是一個1到N之間的整數,1表示排名最高(即該選手得到了最高分),N表示排名最後(即選手的得分最低)。

Sample Input:Sample Output:

5 3 2
0 0 1
1 1 0
1 0 0
1 1 0
1 1 0
3 2

HINT:

第一題1分,第二題2分,第三題4分。因此1號參賽者總分4分,2號參賽者(Philip)、4號參賽者、5號參賽者的總分都是3分,三號參賽者總分為1分。而參考第二個同分排序規則(較小代號在前)後,Philip應排在前。因此Philip的名次為第2名。

測資範圍補上 @ 2013/7/31 22:44 by hanhan0912

Source:

IOI 2009

Problem Setter

Testdata:

TestTimeMemoryScore
02000ms65536kb
12000ms65536kb5
22000ms65536kb5
32000ms65536kb5
42000ms65536kb5
52000ms65536kb5
62000ms65536kb5
72000ms65536kb5
82000ms65536kb5
92000ms65536kb5
102000ms65536kb5
112000ms65536kb5
122000ms65536kb5
132000ms65536kb5
142000ms65536kb5
152000ms65536kb5
162000ms65536kb5
172000ms65536kb5
182000ms65536kb5
192000ms65536kb5
202000ms65536kb5