程式設計思維作業和實驗使用的實**測系統,具有及時獲得成績排名的特點,那它的功能是怎麼實現的呢?
我們千辛萬苦懟完了不忍直視的程式並提交以後,評測系統要麼返回ac,要麼是返回各種其他的錯誤,不論是怎樣的錯法,它總會給你記上一筆,表明你曾經在這兒被坑過,而當你歷經千辛終將它ac之後,它便會和你算筆總賬,表明這題共錯誤提交了幾次。
在歲月的長河中,你通過的題數雖然越來越多,但通過每題時你所共花去的時間(從最開始算起,直至通過題目時的這段時間)都會被記錄下來,作為你曾經奮鬥的痕跡。特別的,對於你通過的題目,你曾經的關於這題的每次錯誤提交都會被算上一定的單位時間罰時,這樣一來,你在做出的題數上,可能領先別人很多,但是在做出同樣題數的人中,你可能會因為罰時過高而處於排名上的劣勢。
例如某次考試一共八道題(a,b,c,d,e,f,g,h),每個人做的題都在對應的題號下有個數量標記,負數表示該學生在該題上有過的錯誤提交次數但到現在還沒有ac,正數表示ac所耗的時間,如果正數a跟上了一對括號,裡面有個正數b,則表示該學生ac了這道題,耗去了時間a,同時曾經錯誤提交了b次。例子可見下方的樣例輸入與輸出部分。
輸入資料報含多行,第一行是共有的題數n(1≤n≤12)以及單位罰時m(10≤m≤20),之後的每行資料描述乙個學生的資訊,首先是學生的使用者名稱(不多於10個字元的字串)其次是所有n道題的得分現狀,其描述採用問題描述中的數量標記的格式,見上面的**。
根據這些學生的得分現狀,輸出乙個實時排名。實時排名顯然先按ac題數的多少排,多的在前,再按時間分的多少排,少的在前,如果湊巧前兩者都相等,則按名字的字典序排,小的在前。每個學生佔一行,輸出名字(10個字元寬),做出的題數(2個字元寬,右對齊)和時間分(4個字元寬,右對齊)。名字、題數和時間分相互之間有乙個空格。資料保證可按要求的輸出格式進行輸出。
輸入: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
輸出tt 5 348
yjq 4 342
gugudong 3 197
hrz 3 256
zjm 2 316
omrailgun 0 0
此題重點在於充分理解題意,並寫出比較函式,要學會用多關鍵字排序
本題的計分函式用score_count函式來實現,將分數以字串的形式讀入並傳給score_count函式,如果字串的a[0]為0或-,則返回0,否則,如果在讀入的過程中沒有遇到(,將字串轉換為整型返回,如果遇到了,將該字串拆分為兩部分,即括號外面的和括號裡面的,返回結果為括號外面的加上括號裡面的*m.多關鍵字比較函式用compare來實現,在以下結果中均返回false(1、a的分數小於b的分數 2、a的分數和b的分數相同但a的時間比b的長 3、a b的分數時間均相同,但a的姓名的字串比b的大),其他情況均返回true,排序採用的是氣泡排序。
#include
#include
#include
//#include
#include
using namespace std;
struct rank_sort
;bool compare
(rank_sort a,rank_sort b)
else
if(a.num==b.num&&a.time>b.time)
else
if(a.num==b.num&&a.time==b.time)
}return true;
}int
score_count
(char a,
int m)
char b[20]
;int neg=0;
char c[20]
;int j=0;
int show=0;
int i;
int len=
strlen
(a);
int ii=0;
int jj=0;
for(
int k=
0;k(show==1)
if(a[k]
=='(')if
(show==0)
}if(show==1)
if(show==0)
}int
main()
} rank[size]
.num=num_right;
rank[size]
.time=sum_time;
size++;}
//排序演算法
for(
int i=size;i>
0;i--)}
}//輸出
int i;
for( i=
0;i)// printf("%-10s %2d %4d",rank[i].name,rank[i].num,rank[i].time);
return0;
}
B 爆零 大力出奇蹟
問題描述 程式設計思維作業和實驗使用的實 測系統,具有及時獲得成績排名的特點,那它的功能是怎麼實現的呢?我們千辛萬苦懟完了不忍直視的程式並提交以後,評測系統要麼返回ac,要麼是返回各種其他的錯誤,不論是怎樣的錯法,它總會給你記上一筆,表明你曾經在這兒被坑過,而當你歷經千辛終將它ac之後,它便會和你算...
Week2 B 爆零 大力出奇蹟
week2 b 爆零 大力出奇蹟 程式設計思維作業和實驗使用的實 測系統,具有及時獲得成績排名的特點,那它的功能是怎麼實現的呢?我們千辛萬苦懟完了不忍直視的程式並提交以後,評測系統要麼返回ac,要麼是返回各種其他的錯誤,不論是怎樣的錯法,它總會給你記上一筆,表明你曾經在這兒被坑過,而當你歷經千辛終將...
Week2實驗B 爆零 大力出奇蹟
提交實驗使用的實 測系統,排名按多關鍵字排序,第一關鍵字為題目ac的個數,第二關鍵字為時間 包括做題時間與罰時 第三關鍵字為名字的字典序,小的在前。例如某次考試一共八道題 a,b,c,d,e,f,g,h 每個人做的題都在對應的題號下有個數量標記,負數表示該學生在該題上有過的錯誤提交次數但到現在還沒有...