90分求调

B3968 [GESP202403 五级] 成绩排序

你可以先把第16行删掉 ###### 这样你就一分也没有了 ``` https://image.baidu.com/search/index?tn=baiduimage&ps=1&ct=201326592&lm=-1&cl=2&nc=1&ie=utf-8&dyTabStr=MCwzLDIsMSw0LDYsNSw3LDgsOQ%3D%3D&word=%E7%8B%97%E5%A4%B4%E8%A1%A8%E6%83%85 ```
by zhangfulin @ 2024-04-29 19:02:19


试试这个 ```cpp #include<bits/stdc++.h> using namespace std; struct node{ int a,b,c,id,score; }x[10005]; int cnt[10005]; bool cmp1(node l,node r){ if(l.a+l.b+l.c==r.a+r.b+r.c){ if(l.a+l.b==r.a+r.b){ if(max(l.a,l.b)==max(r.a,r.b)){ return 0; } return max(l.a,l.b)>max(r.a,r.b); } return l.a+l.b>r.a+r.b; } return l.a+l.b+l.c>r.a+r.b+r.c; } bool cmp2(node m,node n){ return m.id<n.id; } int main(){ int n; cin>>n; for(int i=1;i<=n;i++){ cin>>x[i].a>>x[i].b>>x[i].c; x[i].id=i; } sort(x+1,x+n+1,cmp1); /*for(int i=1;i<=n;i++){ cout<<x[i].a<<' '<<x[i].b<<' '<<x[i].c<<'\n'; }*/ /*for(int i=1;i<=n;i++){ cnt[i]=x[i].a+x[i].b+x[i].c; cout<<cnt[i]<<' '; }*/ int now=1; x[1].score=1; for(int i=2;i<=n;i++){ if(cnt[i]!=cnt[i-1]) cout<<i<<' ',now=i; if(cnt[i]==cnt[i-1]){ if(x[i].a+x[i].b==x[i-1].a+x[i-1].b){ if(max(x[i].a,x[i].b)==max(x[i-1].a,x[i-1].b)){ x[i].score=now; continue; } x[i].score=i; now=i; continue; } x[i].score=i; now=i; continue; } } sort(x+1,x+n+1,cmp2); for(int i=1;i<=n;i++){ cout<<x[i].score<<'\n'; } return 0; } ```
by zhangfulin @ 2024-04-29 20:57:37


@[zhangfulin](/user/1017703) 其实啥也没加
by zhangfulin @ 2024-04-29 20:59:31


|