6 条题解
-
1
#include<bits/stdc++.h> using namespace std; int a[10000000]/*语*/,b[1000000]/*数学*/,c[100000]/*英语*/,p[10000]/*学号*/,k[10000]/*总分*/; int main() { int n,d; cin>>n; for(int i=1;i<=n;i++) { cin>>a[i]>>b[i]>>c[i]; k[i]=a[i]+b[i]+c[i]; p[i]=i;//i为排名 } for(int i=1;i<n;i++) { d=i; for(int j=i+1;j<=n;j++) { if(k[d]<k[j])d=j; } if(d!=i) { swap(k[i],k[d]); swap(a[i],a[d]); swap(b[i],b[d]); swap(c[i],c[d]); swap(p[i],p[d]); } }//总分 for(int i=1;i<n;i++) { d=i; for(int j=i+1;j<=n;j++) { if(k[d]==k[j]&&a[d]<a[j])d=j; } if(d!=i) { swap(k[i],k[d]); swap(a[i],a[d]); swap(b[i],b[d]); swap(c[i],c[d]); swap(p[i],p[d]); } }//语文 for(int i=1;i<n;i++) { d=i; for(int j=i+1;j<=n;j++) { if(k[d]==k[j]&&a[d]==a[j]&&p[d]>p[j])d=j; } if(d!=i) { swap(k[i],k[d]); swap(a[i],a[d]); swap(b[i],b[d]); swap(c[i],c[d]); swap(p[i],p[d]); } }//学号 for(int i=1;i<=5;i++) { cout<<p[i]<<" "<<k[i]<<endl; } } //1 2 3 4 5 6
-
0
结构体 + cmp定义
(可能看起来好看些)#include <bits/stdc++.h> #define int long long int using namespace std; const int N = 310; struct node{ int c,m,e,id;//chinese,math,english int sum; }s[N]; int n; bool cmp(node a1,node a2){ if(a1.sum != a2.sum) return a1.sum > a2.sum; if(a1.c != a2.c) return a1.c > a2.c; return a1.id < a2.id; } signed main(){ scanf("%lld",&n); for (int i = 1;i <= n;i ++){ scanf("%lld %lld %lld",&s[i].c,&s[i].m,&s[i].e); s[i].id = i; s[i].sum = s[i].c + s[i].m + s[i].e; } sort(s + 1,s + 1 + n,cmp); for (int i = 1;i <= 5;i ++){ printf("%lld %lld\n",s[i].id,s[i].sum); } return 0; }
-
0
#include <bits/stdc++.h> using namespace std; const int N=310; struct s{ int n; int c; int m; int e; int total; }a[N]; bool cmp(s x,s y) { if(x.total==y.total){ if(x.c==y.c) return x.n<y.n; else return x.c>y.c ; } else{ return x.total>y.total; } } int main() { int f; cin>>f; for(int i=1;i<=f;i++) { a[i].n=i; cin>>a[i].c>>a[i].m>>a[i].e; a[i].total=a[i].c+a[i].m+a[i].e; } sort(a+1,a+f+1,cmp); for(int i=1;i<=5;i++) { cout<<a[i].n<<" "<<a[i].total<<endl; } }
-
0
using namespace std; struct cj{ int Chinese,Math,English; int xh; int total; }a[10000]; bool pm(cj x,cj y){ if(x.total==y.total){ if(x.Chinese==y.Chinese) return x.xh<y.xh; else return x.Chinese>y.Chinese; } else{ return x.total>y.total; } } int main(){ int n; cin>>n; for(int i=1;i<=n;i++) { cin>>a[i].Chinese>>a[i].Math>>a[i].English; a[i].xh=i; a[i].total=a[i].Chinese+a[i].Math+a[i].English; } sort(a+1,a+n+1,pm); for(int i=1;i<=5;i++){ cout<<a[i].xh<<" "<<a[i].total; cout<<endl; } return 0; }
-
0
#include <bits/stdc++.h> using namespace std; int main () { int n; cin>>n; int yw[10000],sx[100000],yy[10000],zf[100000],a[10000]; for (int i=1;i<=n;i++)//所有数组数据从1开始 { cin>>yw[i]>>sx[i]>>yy[i]; zf[i]=yw[i]+sx[i]+yy[i]; a[i]=i; } for (int i=1;i<=n;i++) { for (int j=n;j>i;j--) { if (zf[j]>zf[j-1]) { swap(zf[j],zf[j-1]); swap(yw[j],yw[j-1]); swap(sx[j],sx[j-1]); swap(yy[j],yy[j-1]); swap(a[j],a[j-1]); } if (zf[j]==zf[j-1]) { if (yw[j]>yw[j-1]) { swap(zf[j],zf[j-1]); swap(yw[j],yw[j-1]); swap(sx[j],sx[j-1]); swap(yy[j],yy[j-1]); swap(a[j],a[j-1]); } } } } for (int k=1;k<=5;k++) cout<<a[k]<<" "<<zf[k]<<endl; return 0; }
-
0
using namespace std; const int N=10000; int n[N],m[N],k[N],f[N],j[N]; int main() { int a; cin>>a; for(int i=1;i<=a;i++) cin>>n[i]>>m[i]>>k[i]; for(int i=1;i<=a;i++) { f[i]=n[i]+m[i]+k[i]; } for(int i=1;i<=a;i++) j[i]=i; for(int i=1;i<=10000;i++) { for(int u=1;u<=a-1;u++) { if(f[u]<f[u+1]) { swap(f[u],f[u+1]); swap(j[u],j[u+1]); swap(n[u],n[u+1]); } else if(f[u]==f[u+1]) { if(n[u]<n[u+1]) { swap(j[u],j[u+1]); swap(n[u],n[u+1]); } else if(n[u]==n[u+1]) { if(j[u]>j[u+1]) { swap(j[u],j[u+1]); } } } } } if(a>=5) { for(int i=1;i<=5;i++) cout<<j[i]<<" "<<f[i]<<endl; } else if(a<5) { for(int i=1;i<=a;i++) cout<<j[i]<<" "<<f[i]<<endl; } return 0; }
- 1
信息
- ID
- 303
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 4
- 标签
- 递交数
- 239
- 已通过
- 111
- 上传者