问题标题: 酷町堂:2732 发放奖学金

0
0
已解决
陈曦
陈曦
资深天翼
资深天翼

结构体的题竟然还错!

 

https://ke.codingtang.com/#/problem/problemSub?id=2732

#include<iostream>
#include<cstdio>
#include<algorithm> 
using namespace std;
int n,a,b,c,f;
struct pm{
    int dd,v;
}s[350]; 
bool cmp(pm x,pm y){
    return x.v>y.v;
}
int main(){
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>a>>b>>c;
        s[i].v=a+b+c;
        s[i].dd=i;
    }
    sort(s+1,s+n+1,cmp);
    if(n>=5) f=5;
    else     f=n;
    for(int i=1;i<=f;i++){
        cout<<s[i].dd<<" "<<s[i].v<<endl; 
    }
    return 0;
}

90分


0
已采纳
朱子尘
朱子尘
初级光能
初级光能

题目要求:如果两个同学总分和语文成绩都相同,那么规定学号小的同学 排在前面。

你在排序时并没有考虑学号,你改一下

(你这方法太特别了)

朱子尘在2021-01-07 20:31:40追加了内容

还有语文成绩

1
0
0
Kevin
Kevin
中级守护
中级守护

g[305];//结构体数组(范围:5<n≤300)。

bool cmp(people x,people y)//sort排序定义两个结构体变量x,y。

{

/*

排序内容(每个学生的排序是唯一确定的):

1.先按总分从高到低排序。

2.如果两个同学总分相同,再按语文成绩从高到低排序。

3.如果两个同学总分和语文成绩都相同,那么规定学号小的同学 排在前面。

*/

if(x.sum!=y.sum)

{

return x.sum>y.sum;

}

if(x.Chinese!=y.Chinese)

{

return x.Chinese>y.Chinese;

}

return x.id<y.id;

}

 

我要回答