30pts求调……

B3968 [GESP202403 五级] 成绩排序

你有个地方的 x 写成 y 了。 ```cpp #include<bits/stdc++.h> using namespace std; struct score{ int c,m,e,tot,num,rank; }a[100010]; bool cmp(score x,score y) { if(x.tot==y.tot) { if(x.c+x/* 这里写错了你写的是 y.m */.m/* 改 */!=y.c+y.m) return x.c+x.m>y.c+y.m; return max(x.c,x.m)>max(y.c,y.m); } return x.tot>y.tot; } bool binlie(score x,score y) { if(x.tot==y.tot&&x.c+x.m==y.c+y.m&&max(x.c,x.m)==max(y.c,y.m)) return true; return false; } int n; int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>a[i].c>>a[i].m>>a[i].e; a[i].tot=a[i].c+a[i].m+a[i].e,a[i].num=i; } sort(a+1,a+n+1,cmp); for(int i=1;i<=n;i++) { if(binlie(a[i-1],a[i])) a[i].rank=a[i-1].rank; else a[i].rank=i; } for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) { if(a[j].num==i) { cout<<a[j].rank<<endl; break; } } } return 0; } ```
by xyx404 @ 2024-04-26 20:42:25


|