水题啊!!!
用结构体存储数据,然后排序。排完序之后要算出录取的人数。
注意:录取m*150%(向上取整)的人数以后,他的下一位可能也是这个分数。(我第一次没通过就在这)
上代码吧:
#include<bits/stdc++.h> using namespace std; struct student { int k; int s; }stu[5010]; bool cmp(student a,student b) { if(a.s==b.s) { return a.k<b.k; } return a.s>b.s; } int main() { int n,m; cin>>n>>m; for(int i=1;i<=n;i++) { cin>>stu[i].k>>stu[i].s; } sort(stu+1,stu+1+n,cmp); int number=floor(m*1.50); int fsx=stu[number].s; cout<<fsx<<" "; int i=number; while(stu[i].s==stu[i+1].s) { i++; } cout<<i<<endl; for(int j=1;j<=i;j++) { cout<<stu[j].k<<" "<<stu[j].s<<endl; } system("pause"); return 0; }