考完試以後,菠蘿獲得了乙個含有 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...