菠蘿的成績單(結構體快排)

2021-08-06 03:48:56 字數 1417 閱讀 6169

考完試以後,菠蘿獲得了乙個含有 n 個成績的成績單,他要把成績按照從高到低排序,如果成績相同則按照學生編號從小到大排序。

老師為了檢驗菠蘿是否把成績排序對了,會詢問前 m 高的成績及該學生的編號,你能幫菠蘿回答老師的詢問嗎?

input

輸入資料有多組(資料組數不超過 10),到 eof 結束。

對於每組資料:

第一行輸入成績的個數 n 以及 m (1 <= n <= 100000, 1 <= m <= n)

接下來的 n 行,每行輸入 2 個正整數,分別為學生編號 id (1 <= id <= n),成績 ai (1 <= ai <= 10000)

當 n 和 m 同時為 0 時結束程式。

output

對於每組資料:

第一行輸出 「case #x:」 (輸出不包括引號,且冒號後無空格),x 表示當前為第幾組資料

之後輸出 m 行。每行格式按照 「編號 成績」 的格式輸出

example input

3 1

1 1

2 2

3 3

5 3

4 2

2 2

1 1

3 3

5 2

0 0

example output

case #1:

3 3

case #2:

3 3

2 2

4 2請大家仔細核對 「case #x:」,建議複製樣例輸出的模式以防輸出時不符合題目要求而導致的 wrong answer。

資料量較大,請使用高效排序演算法。

結構體快排示例:

int cmp(node c, node d)

sort(node,node+n,cmp);

**如下

#include

using namespace std;

struct node

a[100001],q;

int cmp(node w,node e)

sort(a,a+n,cmp);

//超時,沒有看見資料量

/*for(i=0;ifor(j=i+1;jif(a[k].aielse

if(a[k].ai==a[j].ai&&a[k].id>a[j].id)

k=j;

}if(k!=i)

}*/printf("case #%d:\n",c);

for(i=0;iprintf("%d

%d\n",a[i].id,a[i].ai);

}return

0;}

菠蘿的成績單 多元素快排

快排不僅利用一種元素進行排序,例如int大小排序,char字典序排序,同時可以進行多元素排序,例如按照質量公升序排序,質量相同時按照 降序排序,此時也可以利用快排進行排序,例如3下面這道題目 problem description 考完試以後,菠蘿獲得了乙個含有 n 個成績的成績單,他要把成績按照從...

帶姓名的成績單 a

作 者 霍雨佳 完成日期 2013 年12月5日 版 本 號 v1.0 問題描述 輸出按成績排名後的同學名單。樣例輸入 樣例輸出 問題分析 輸入同學的姓名成績,輸出按成績排名後的同學名單。include using namespace std int main string k,name 20 fo...

帶姓名的多科成績單

用陣列string name表示同學們的姓名,使姓名與成績的下標保持一致。設計輸入成績的函式,輸入3科成績後可以自動求出總分,並將資料全儲存到陣列中 include includeconst int size 2 using namespace std void outputfun string n...