结构体排序

当小和尚排完名单后,老和尚突然一拍脑袋:“导员把每个人的人名都给我了,可我忘记告诉你了。”好吧……我们可怜的小和尚看来要费二遍事了(好像之前的任务都是你帮他做的,好吧,你真可怜)

Input

输入数据为多组,输入的第一行为和尚的人数N,可以得到奖学金的人数M,和需要补考的人数O(在这里可以满足M+O<=N,即得到奖学金的和尚一定不用参加补考)。之后的N行每行都有一个字符串(即为和尚的名字,长度小于100)和尚考试的总分a[i](0 <= a[i] <= 1000)。

Output

前M行,每行是获得奖学金的小和尚的名字;
后O行,每行是补考的小和尚的名字;
由于老和尚觉得很对不起小和尚,所以他决定这次简单些,所以无论是奖励还是惩罚都按照总成绩从低到高输出和尚的名字即可。

Sample Input

5 1 2
a 192 
aa 212
ab 351
bab 128
bbaa 654

Sample Output

bbaa
bab
ad

代码如下:

#include <iostream>
#include <bits/stdc++.h>
using namespace std;
typedef struct{
char name[105];
int grade;
}student;
bool cmp(student a,student b)
{
    return a.grade<b.grade;

}
student p[1000];
int main()
{ int n,i,j,t,front,end;
while(cin>>n>>front>>end)
{for(i=0;i<n;i++)
{
    cin>>p[i].name;
    cin>>p[i].grade;
}
sort(p,p+n,cmp);
for(i=n-1;i>n-front-1;i--)
{
    cout<<p[i].name<<endl;

}
for(i=0;i<end;i++)
{
    cout<<p[i].name<<endl;

}
}
    return 0;
}
代码解释:

定义一个student结构体,然后根据成绩sort()排序,并输出得到奖学金和补考学生的名单

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值