抢课啦!(排序)
鏈接:https://ac.nowcoder.com/acm/contest/321/B
來源:牛客網
?
時間限制:C/C++ 1秒,其他語言2秒
空間限制:C/C++ 32768K,其他語言65536K
64bit IO Format: %lld
題目描述
沒有選上課的孩子,或者還有?”“救救孩子……”
__________________________
又又又到了選修課搶課的時間了!集訓隊成員全心備戰亞洲區域賽,居然忘記了選課.
緩過神來的集訓隊成員現在很想知道,每門課人數從小到大的排序結果是什么.
Wty主席這時微微一笑,早已看穿了一切.
他早就實時爬取了每一個學生所選的課程列表,現在只需要簡單的統計就行了!
你能幫幫他們嗎?
輸入描述:
第一行兩個正整數N,M,其中N<=104,M<=104,課程從1-M編號,接下來N行,每行一開始為一個非負整數K,表示該學生選課數量,接下來一行內有K個不同的正整數ai表示每個學生所選的課程編號,其中0<=K<=10 ,1<=ai<=M輸出描述:
M行,每行兩個數字,分別代表課程編號與課程人數, 相同人數的,課程編號小的先輸出示例1
輸入
復制
3 3 1 1 3 1 2 3 2 2 3輸出
復制
1 2 2 2 3 2說明
所有課程的人數都一樣,于是按照課程編號輸出代碼:
#include<cstdio> #include<iostream> #include<cstring> #include<algorithm>using namespace std;struct node {int num,sum; }p[100005]; int a[10005]; bool cmp(node x,node y) {if(x.sum!=y.sum){return x.sum<y.sum;}else{return x.num<y.num;} } int main() {int N,M;int K;cin>>N>>M;for(int t=0;t<N;t++){scanf("%d",&K);for(int j=0;j<K;j++){int s;scanf("%d",&s);a[s]++; }}for(int t=1;t<=M;t++){p[t].num=t;p[t].sum=a[t];}sort(p+1,p+M+1,cmp);for(int t=1;t<=M;t++){cout<<p[t].num<<" "<<p[t].sum<<endl;}return 0; }?
轉載于:https://www.cnblogs.com/Staceyacm/p/10781873.html
總結
- 上一篇: 单元测试框架之unittest(一)
- 下一篇: 水滴公司上市首日破发 盈利点和盈利能