2 solutions
-
1
#include<bits/stdc++.h> using namespace std; struct Node{ int yu; int shu; int en; int idx; int zo; }arr[333]; bool cmp(Node a,Node b){ if(a.zo>b.zo) return 1; if(a.zo==b.zo&&a.yu>b.yu) return 1; if(a.zo==b.zo&&a.yu==b.yu&&a.idx<b.idx) return 1; return 0; } int main(){ int n; cin>>n; for(int i=1;i<=n;i++){ cin>>arr[i].yu>>arr[i].shu>>arr[i].en; arr[i].zo=arr[i].yu+arr[i].shu+arr[i].en; arr[i].idx=i; } sort(arr+1,arr+n+1,cmp); for(int i=1;i<=5;i++){ cout<<arr[i].idx<<' '<<arr[i].zo<<endl; } return 0; } -
-2
排序
#include<bits/stdc++.h> using namespace std; const int N=310; struct Stu{ int total,yuwen,shuxue,yingyu,id; }; Stu s[N]; bool cmp(Stu a,Stu b) { if(a.total>b.total) return 1; //总分 if(a.total==b.total&&a.yuwen>b.yuwen) return 1; //总分相同语文 if(a.total==b.total&&a.yuwen==b.yuwen&&a.id<b.id) return 1; //总分语文相同,学号 return 0; //不符合当前规则 } int main() { int n; cin>>n; for(int i=1;i<=n;i++) { cin>>s[i].yuwen>>s[i].shuxue>>s[i].yingyu; s[i].total=s[i].yingyu+s[i].yuwen+s[i].shuxue; s[i].id=i; } sort(s+1,s+1+n,cmp); for(int i=1;i<=5;i++) { cout<<s[i].id<<" "<<s[i].total<<endl; } }
- 1
Information
- ID
- 417
- Time
- 1000ms
- Memory
- 128MiB
- Difficulty
- 6
- Tags
- # Submissions
- 15
- Accepted
- 11
- Uploaded By