提交實驗使用的實**測系統,排名按多關鍵字排序,第一關鍵字為題目ac的個數,第二關鍵字為時間(包括做題時間與罰時),第三關鍵字為名字的字典序,小的在前。
例如某次考試一共八道題(a,b,c,d,e,f,g,h),每個人做的題都在對應的題號下有個數量標記,負數表示該學生在該題上有過的錯誤提交次數但到現在還沒有ac,正數表示ac所耗的時間,如果正數a跟上了一對括號,裡面有個正數b,則表示該學生ac了這道題,耗去了時間a,同時曾經錯誤提交了b次。
input:
輸入資料報含多行,第一行是共有的題數n(1≤n≤12)以及單位罰時m(10≤m≤20),之後的每行資料描述乙個學生的資訊,首先是學生的使用者名稱(不多於10個字元的字串)其次是所有n道題的得分現狀
output:
根據這些學生的得分現狀,輸出乙個實時排名
sample input:
8 20
gugudong 96 -3 40(3) 0 0 1 -8 0
hrz 107 67 -3 0 0 82 0 0
tt 120(3) 30 10(1) -3 0 47 21(2) -2
omrailgun 0 -99 -8 0 -666 -10086 0 -9999996
yjq -2 37(2) 13 -1 0 113(2) 79(1) -1
zjm 0 0 57(5) 0 0 99(3) -7 0
sample output:
tt 5 348
yjq 4 342
gugudong 3 197
hrz 3 256
zjm 2 316
omrailgun 0 0
注:每個學生佔一行,輸出名字(10個字元寬),做出的題數(2個字元寬,右對齊)和時間分(4個字元寬,右對齊)
分析:1.解決讀入學生成績問題,a(b)字元怎樣讀入,用sscanf格式化輸入;
2.用sscanf判斷及正確讀入資料後進行時間計算;
3.多關鍵字排序演算法
bool
com(sc x,sc y)
return x.ac>y.ac;
}
比較兩個字串大小,用strcmp()函式進行比較
4.按照要求對齊格式輸出,預設右對齊,加"-"表示左對齊
//c中
printf
("%-10s %2d %4d\n"
,arr[k]
.name,arr[k]
.ac,arr[k]
.time)
;//c++中
cout
)<.name<<
" ";
該題主要考察的就是string的標準輸入輸出,以及string相應的函式運用
#include
#include
#include
#include
using
namespace std;
struct scarr[
1000];
bool
com(sc x,sc y)
return x.ac>y.ac;
}int
main()
if(num==
1&t1>0)
} i++;}
sort
(arr,arr+i,com)
;for
(int k=
0;k)return0;
}
Week2 實驗B 成績排名
模擬oj的成績排名。輸入 題數n 單位罰時m 之後每行資料代表乙個學生的資訊 使用者名稱 不超過10個字元 n道題的的得分現狀。每道題的得分現狀 負數表示該學生在該題上有過的錯誤提交次數但到現在還沒有ac,正數表示ac所耗的時間,如果正數a跟上了一對括號,裡面有個正數b,則表示該學生ac了這道題,耗...
Week2實驗 A 化學
問題描述 有六個原子,其中原子隨意編號,給定五條原子之間相連的邊,判斷輸入結構是下圖的哪一種 思路 很顯然可以用每個原子的度來判斷,但是有兩個結構的最大度數都是3,3 methy 和 2 methy 進一步判斷發現3 methy連線了兩個度為2的原子,根據此就能區分這兩個。最初的 比較繁瑣,後來經過...
Week2實驗 A 化學 模擬
包含6個原子和5個化學鍵的烷烴基共有5種,用1 6標號6個原子,然後用一對數字a,b表示原子a和原子b之間有乙個化學鍵。給定5行a,b,判斷出它的類別,輸出其化學名稱 見下圖 原子沒有標號方法,即同乙個原子可能標號為1,也可能為2,依次類推。首先找出5種類別之間較大的區別 n 類的各原子鍵數分別為1...