結構體排序二 1339 考試排名(帶技巧的輸入)

2021-08-30 17:52:52 字數 2011 閱讀 2163

zcmu 1339: 考試排名

time limit: 1 sec memory limit: 128 mb

description

c++程式設計考試使用的實時提交系統,具有即時獲得成績排名的特點。它的功能是怎麼實現的呢?

我們做好了題目的解答,提交之後,要麼「ac」,要麼錯誤,不管怎樣錯法,總是給你記上一筆,表明你曾經有過一次錯誤提交,因而當你一旦提交該題 「ac」後,就要與你算一算帳了,總共該題錯誤提交了幾回。雖然你在題數上,大步地躍上了乙個台階,但是在耗時上要攤上你共花去的時間。特別是,曾經有過 的錯誤提交,每次都要攤上一定的單位時間分。這樣一來,你在做出的題數上,可能領先別人很多,但是,在做出同樣題數的人群中,你可能會在耗時上處於排名的 劣勢。

例如:某次考試一共8題(a,b,c,d,e,f,g,h),每個人做的題都在對應的題號下有個數量標記,負數表示該學生在該題上有過的錯誤提交 次數,但到現在還沒有ac,正數表示ac所耗的時間,如果正數a跟上一對括號,裡面有個整數b,那就表示該學生提交該題ac了,耗去了時間a,同時,曾經 錯誤提交了b次,因此對於下述輸入資料:

name a b c d e f g h

smith -1 -16 8 0 0 120 39 0

john 116 -2 11 0 0 82 55(1) 0

jose 72(3) 126 10 -3 0 47 21(2) -2

bush 0 -1 -8 0 0 0 0 0

alice -2 67(2) 13 -1 0 133 79(1) -1

bob 0 0 57(5) 0 0 168 -7 0

若每次錯誤提交的罰分為20分,則其排名從高到低應該是這樣的:

jose 5 376

john 4 284

alice 4 352

smith 3 167

bob 2 325

bush 0 0

input

輸入資料的第一行是考試題數n(1≤n≤12)以及單位罰分數 m(10≤m≤20),p名學生數,每行資料描述乙個學生的使用者名稱(不多於10個字元的字串)以及對所有n道題的答題現狀,其描述採用問題描述中的數量標記的格式,見 上面的**,提交次數總是小於100,ac所耗時間總是小於1000。

output

將這些學生的考試現狀,輸出乙個實時排名。實時排名顯然先按ac題數的多 少排,多的在前,再按時間分的多少排,少的在前,如果湊巧前兩者都相等,則按名字的字典序排,小的在前。每個學生佔一行,輸出名字(10個字元寬),做出 的題數(2個字元寬,右對齊)和時間分(4個字元寬,右對齊)。名字、題數和時間分相互之間有乙個空格。

sample input

8 20 6

smith -1 -16 8 0 0 120 39 0

john 116 -2 11 0 0 82 55(1) 0

josephus 72(3) 126 10 -3 0 47 21(2) -2

bush 0 -1 -8 0 0 0 0 0

alice -2 67(2) 13 -1 0 133 79(1) -1

bob 0 0 57(5) 0 0 168 -7 0

sample output

josephus 5 376

john 4 284

alice 4 352

smith 3 167

bob 2 325

bush 0 0

我的ac**如下:

#include #include #include using namespace std;

struct stu

;bool cmp(stu x,stu y)

return x.time < y.time;

}return x.acnum > y.acnum;

}int main()}}

k++;

}sort(date,date+k,cmp);//p已經變為-1了,所以只能用k

for(int j = 0; j < k; j++)

}return 0;

}

題目1014 排名(結構體排序)

每次先輸入考生人數n 0 n 1000 考題數m 0 m 10 分數線 正整數 g 接著是第1題至第m題的正整數分值 之後是每名考生的准考證號 長度不超過20的字串 題目總數m 以及這m道題的題號 題目號由1到m 直接進行處理,計算出每個學生的總分數,超過分數線就加入到結構體陣列中,最後對陣列sor...

HDU 1236 排名(結構體 排序)

今天的上機考試雖然有實時的ranklist,但上面的排名只是根據完成的題數排序,沒有考慮 每題的分值,所以並不是最後的排名。給定錄取分數線,請你寫程式找出最後通過分數線的 考生,並將他們的成績按降序列印。input測試輸入包含若干場考試的資訊。每場考試資訊的第1行給出考生人數n 0 n 1000 考...

大整數排序(結構體二級排序)

對n個長度最長可達到1000的數進行排序。輸入描述 輸入第一行為乙個整數n,1 n 100 接下來的n行每行有乙個數,數的長度範圍為1 len 1000。每個數都是乙個正數,並且保證不包含字首零。輸出描述 可能有多組測試資料,對於每組資料,將給出的n個數從小到大進行排序,輸出排序後的結果,每個數占一...