1015 德才论 (25分)

这题挺简单的,qsort要会用

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct {
	char id[100];
	int de;
	int cai;
	int sum;
	int rank;
}Stu;
Stu stu[100000];//必须全局变量且数组开的足够大否则段错误
int N, L, H, M = 0;
int cmp(const void *a, const void *b)
{
	const Stu *A = (Stu *) a;
	const Stu *B = (Stu *) b;
	if(A->rank == B->rank)
	{
		if(A->sum == B->sum)
			{
				if(A->de == B->de)
					return strcmp(A->id, B->id);
				return B->de - A->de;
			}
		return B->sum - A->sum;
	}
	return A->rank - B->rank;

}	
int main()
{
	scanf("%d %d %d", &N, &L, &H);
	for(int i = 0; i < N; i++)
		{
			scanf("%s %d %d", stu[i].id, &stu[i].de, &stu[i].cai);
			stu[i].sum = stu[i].de + stu[i].cai;
		}
	for(int i = 0; i < N; i++)
		{
			if(stu[i].de >= L && stu[i].cai >= L)
				{
					M++;
					if(stu[i].de >= H && stu[i].cai >= H)
						stu[i].rank = 1;
					else if(stu[i].de >= H && stu[i].cai < H)
						stu[i].rank = 2;
					else if(stu[i].de < H && stu[i].cai < H && stu[i].de >= stu[i].cai)
						stu[i].rank = 3;
					else
						stu[i].rank = 4;
				}
			else
				stu[i].rank = 5;
		}
	qsort(stu, N, sizeof(Stu), cmp);
	printf("%d\n", M);
	for(int i = 0; i < M; i++)
		printf("%s %d %d%c", stu[i].id, stu[i].de, stu[i].cai, i - 1 == N ? ' ' : '\n');
	return 0;
} 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

咸鱼xxx

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值