70分! 6 8 9 三个点错了 求助!

P1093 [NOIP2007 普及组] 奖学金

酸酸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

呃......我可以骂人吗


| 下一页