酸酸Charles @ 2019-02-17 14:37:50
using namespace std;
int a[305],b[305],c[305],sum[305],indx[305];
bool compare(int i,int j){
if(sum[i]!=sum[j])return sum[i]>sum[j];
else if(a[i]!=b[j])return a[i]>b[j];
else return i<j;
}
int main(){
int n;
cin>>n;
for(int i=0;i<n;i++){
indx[i]=i;
cin>>a[i]>>b[i]>>c[i];
sum[i]+=(a[i]+b[i]+c[i]);
}
sort(indx,indx+n,compare);
if(n>=5){
for(int i=0;i<5;i++){
cout<<indx[i]+1<<' '<<sum[indx[i]]<<endl;
}
}
else for(int i=0;i<n;i++){
cout<<indx[i]+1<<' '<<sum[indx[i]]<<endl;
}
return 0;
}
by 蒟蒻365 @ 2019-02-17 14:47:44
您这排序不用结构体的吗
by 酸酸Charles @ 2019-02-17 15:11:10
@蒟蒻365 对序号排序啊 对序号排序的条件是满足题目的数组的
by 蒟蒻365 @ 2019-02-17 15:19:30
我觉得是排序的锅,其他部分都没问题啊
by 蒟蒻365 @ 2019-02-17 15:21:08
改成这样试试?
bool compare(int i,int j){
if(sum[i]!=sum[j])return sum[i]>sum[j];
else if(a[i]!=b[j])return a[i]>b[j];
else return indx[i]<indx[j];
}
by 蒟蒻365 @ 2019-02-17 15:22:04
应该比较i、j对应的学号,而不是i、j
by 酸酸Charles @ 2019-02-17 15:29:50
@蒟蒻365 改了还是和原来一样。。。
by 蒟蒻365 @ 2019-02-17 15:31:42
好尴尬啊
by 酸酸Charles @ 2019-02-17 15:33:51
@蒟蒻365 hhh还是谢谢你啦 看样子一时半会找不到哪里的毛病
by 酸酸Charles @ 2019-02-17 16:04:51
@蒟蒻365 找到了 是把数学成绩和语文比较了 把a写成了b...
by 蒟蒻365 @ 2019-02-17 16:07:26
呃......我可以骂人吗