2 solutions
-
2
#include<bits/stdc++.h> using namespace std; struct Person{ int id; int sc; }; const int N=5010; Person p[N]; bool cmp(Person a,Person b) { if(a.sc>b.sc) return 1; //1.成绩从大到小 if(a.sc==b.sc&&a.id<b.id) return 1; //2.成绩相同报名号从小到大 return 0; } int main() { int n,m; cin>>n>>m; for(int i=1;i<=n;i++) cin>>p[i].id>>p[i].sc; sort(p+1,p+n+1,cmp); int k=m*1.5; int t=k; while(t<=n&&p[k].sc==p[t].sc) t++; //走到最后一个不相等的地方,或者越界 、 t--; cout<<p[k].sc<<" "<<t<<endl; for(int i=1;i<=t;i++) { cout<<p[i].id<<" "<<p[i].sc<<endl; } return 0; } -
0
#include<bits/stdc++.h> using namespace std; struct node{ int id,ex; }a[5005]; bool s[5005]; int n,m; int sum; bool cmp(node c,node d){ if(c.ex>d.ex){ return 1; } if(c.ex==d.ex&&c.id<d.id){ return 1; } return 0; } int main() { cin>>n>>m; for(int i=1;i<=n;i++){ cin>>a[i].id>>a[i].ex; } sort(a+1,a+n+1,cmp); sum=floor(m*1.5); int t=a[sum].ex; cout<<t<<" "; int cnt=0; for(int i=1;i<=n;i++){ if(a[i].ex>=t){ cnt++; s[i]=1; } } cout<<cnt<<endl; for(int i=1;i<=n;i++){ if(s[i]){ cout<<a[i].id<<" "<<a[i].ex<<endl; } } return 0; }
- 1
Information
- ID
- 946
- Time
- 1000ms
- Memory
- 256MiB
- Difficulty
- 3
- Tags
- (None)
- # Submissions
- 64
- Accepted
- 23
- Uploaded By