0pts求条

P1093 [NOIP2007 普及组] 奖学金

Tpp2024 @ 2024-08-21 09:24:33

代码如下:

#include <bits/stdc++.h>

using namespace std;
int n;
struct node{
    int num;
    int ch,ma,en;
    int all=0;
}a[310];

bool cmp(node x,node y)
{
    if(x.all!=y.all) return x.all>y.all;
    else if(x.ch>y.ch)return x.ch>y.ch;
    else return x.num<y.num;
}

int main()
{   
    cin>>n;
    for(int i=1;i<=n;i++)
    {   
        a[i].num=i;
        cin>>a[i].ch>>a[i].ma>>a[i].en;
        a[i].all=a[i].ch+a[i].ma+a[i].en;
    }

    sort(a+1,a+1+n,cmp);

    for(int i=1;i<=n;i++)
        cout<<a[i].num<<" "<<a[i].all<<endl;
    return 0;
}

0分,悬关求条


by WEICY123 @ 2024-08-21 09:46:47

@Tpp2024 最后一个循环次数改为5


by feng_chenShy @ 2024-08-21 10:30:03

@Tpp2024 本来想看看的。结果看到是用的结构体,我就被劝退了


by luozijie55358 @ 2024-08-24 20:41:25

cmp函数写错了``` bool cmp(node x,node y){ if(x.zf>y.zf) return 1;//比较总分 if(x.zf==y.zf&&x.yw>y.yw) return 1;//如果总分一样,比语文分数 if(x.zf==y.zf&&x.yw==y.yw&&x.xh<y.xh) return 1;//如果语文和总分都一样,比学号 return 0;//如果都不一样 }



最后一个循环输出的是前五名人的分数

by xixishowtime @ 2024-08-28 16:39:03

cmp第二行应该改成

else if(x.ch!=y.ch)return x.ch>y.ch

还有主函数倒数第三行应该改成

for(int i=1;i<=5;i++)

|