逻辑不对,你这样写c()每次都会在第一行直接return,后面的代码等于不存在
```cpp
#include<bits/stdc++.h>
using namespace std;
struct chengji{
int yw,sx,yy;
int zf;
int so;
}a[10000];
bool c(chengji a,chengji b){
if (a.zf != b.zf)
return a.zf>b.zf;
if (a.yw != b.yw)
return a.yw>b.yw;
return a.so<b.so;
}
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i].yw>>a[i].sx>>a[i].yy;
a[i].zf=a[i].yw+a[i].sx+a[i].yy;
a[i].so=i;
}
sort(a+1,a+n+1,c);
for(int i=1;i<=5;i++){
cout<<a[i].so<<" "<<a[i].zf<<endl;
}
return 0;
}
``````
by 杜都督 @ 2024-02-06 23:11:11
把c函数改成```cpp
if ( a.z == b.z )
{
if ( a.y == b.y )
{
return a.nu < b.nu;
}
return a.y > b.y;
}
return a.z > b.z;
by wangqicheng1637 @ 2024-03-15 17:59:41