題目
1015. 德才論 (25)宋代史學家司馬光在《資治通鑑》中有一段著名的「德才論」:「是故才德全盡謂之聖人,才德兼亡謂之愚人,德勝才謂之君子,才勝德謂之小人。凡取人之術,苟不得聖人,君子而與之,與其得小人,不若得愚人。」
現給出一批考生的德才分數,請根據司馬光的理論給出錄取排名。
輸入格式:
輸入第1行給出3個正整數,分別為:n(
<=105),即考生總數;l(>=60),為錄取最低分數線,即德分和才分均不低於l的考生才有資格被考慮錄取;h(<100
),為優先錄取線——德分和才分均不低於此線的被定義為「才德全盡」,此類考生按德才總分從高到低排序;才分不到但德分到線的一類考生屬於「德勝才」,也按總分排序,但排在第一類考生之後;德才分均低於h,但是德分不低於才分的考生屬於「才德兼亡」但尚有「德勝才」者,按總分排序,但排在第二類考生之後;其他達到最低線l的考生也按總分排序,但排在第三類考生之後。
隨後n行,每行給出一位考生的資訊,包括:准考證號、德分、才分,其中准考證號為8位整數,德才分為區間[
0, 100
]內的整數。數字間以空格分隔。
輸出格式:
輸出第1行首先給出達到最低分數線的考生人數m,隨後m行,每行按照輸入格式輸出一位考生的資訊,考生按輸入中說明的規則從高到低排序。當某類考生中有多人總分相同時,按其德分降序排列;若德分也並列,則按准考證號的公升序輸出。
輸入樣例:
1460
8010000001
6490
10000002
9060
10000011
8580
10000003
8580
10000004
8085
10000005
8277
10000006
8376
10000007
9078
10000008
7579
10000009
5990
10000010
8845
10000012
80100
10000013
9099
10000014
6660
輸出樣例:
1210000013
9099
10000012
80100
10000003
8580
10000011
8580
10000004
8085
10000007
9078
10000006
8376
10000005
8277
10000002
9060
10000014
6660
10000008
7579
10000001
6490
這裡使用了多字段排序,呼叫系統自帶的快速排序最為合適,需要實現自己的cmp函式。
#include #include#include
typedef
struct
student;
int comp(const
void *a, const
void *b)
intmain()
}qsort(p1,n1,
sizeof
(student),comp);
qsort(p2,n2,
sizeof
(student),comp);
qsort(p3,n3,
sizeof
(student),comp);
qsort(p4,n4,
sizeof
(student),comp);
printf(
"%d\n
",n1+n2+n3+n4);
for(i=0;i)
printf(
"%d %d %d\n
",p1[i].num,p1[i].d,p1[i].c);
for(i=0;i)
printf(
"%d %d %d\n
",p2[i].num,p2[i].d,p2[i].c);
for(i=0;i)
printf(
"%d %d %d\n
",p3[i].num,p3[i].d,p3[i].c);
for(i=0;i)
printf(
"%d %d %d\n
",p4[i].num,p4[i].d,p4[i].c);
return0;
}
c語言中使用自帶的qsort(結構體排序) 快排
c中沒有自帶的sort函式emm 不過有自帶的qsort函式 其實用法都差不多 只是我經常以為c中有sort 標頭檔案要用 1 include 一定要重新把指標指向的值賦值給乙個node型別,不然比較不了 1 struct nodea n 45 int cmp const void x,const ...
c語言中使用自帶的qsort(結構體排序) 快排
c中沒有自帶的sort函式emm 不過有自帶的qsort函式 其實用法都差不多 只是我經常以為c中有sort 標頭檔案要用 1 include 一定要重新把指標指向的值賦值給乙個node型別,不然比較不了 1 struct nodea n 45 int cmp const void x,const ...
C語言快排函式qsort
原本以為c語言中的快排函式都要靠自己去實現,今天才知道,原來qsort就是c語言中的快排函式,包含在stdlib.h標頭檔案中,函式一共有四個引數,沒有返回值。int cmp const void const void qsort s,n,sizeof s 0 cmp 其中第乙個引數s是乙個位址,即...