PAT 乙级 1015

这题数量较大不能用cin cout(对于我的这种方法)。要用scanf printf。


只是用到了结构体,其他根据题目就可以了。

记得交题格式是c++;

#include<stdio.h>
#include<algorithm>
#define maxn 100010
using namespace std;
struct st{
	int number;
	int d,c,score;
}stu[maxn];

st c1[maxn],c2[maxn],c3[maxn],c4[maxn];
bool cmp(st a,st b)
{
	if(a.score==b.score)
	{
		if(a.d==b.d)
		  return a.number<b.number;
		return a.d>b.d;  
	}
	else
	  return a.score>b.score;
}
int main()
{
	
	int a1=0,a2=0,a3=0,a4=0;
	int n,L,H;
	scanf("%d %d %d",&n,&L,&H);
	for(int i=0;i<n;i++)
	{
		scanf("%d %d %d",&stu[i].number,&stu[i].d,&stu[i].c);
		if(stu[i].d<L&&stu[i].c<L)
		  continue;
		stu[i].score=stu[i].d+stu[i].c;
		if(stu[i].d>=H&&stu[i].c>=H)
		  c1[a1++]=stu[i];
		else if(stu[i].d>=H&&stu[i].c<H&&stu[i].c>=L)
		  c2[a2++]=stu[i];
		else if(stu[i].d>=stu[i].c&&stu[i].d>=L&&stu[i].d<H&&stu[i].c>=L&&stu[i].c<H)
		  c3[a3++]=stu[i];
	    else
		  {
		  	if(stu[i].d>=L&&stu[i].c>=L)
		  	  c4[a4++]=stu[i];
		  }      
	}
	sort(c1,c1+a1,cmp);
	sort(c2,c2+a2,cmp);
	sort(c3,c3+a3,cmp);
	sort(c4,c4+a4,cmp);
	printf("%d\n",a1+a2+a3+a4);;
	for(int i=0;i<a1;i++)
	  printf("%d %d %d\n",c1[i].number,c1[i].d,c1[i].c);
	for(int i=0;i<a2;i++)
	  printf("%d %d %d\n",c2[i].number,c2[i].d,c2[i].c);
	for(int i=0;i<a3;i++)
	  printf("%d %d %d\n",c3[i].number,c3[i].d,c3[i].c);
	for(int i=0;i<a4;i++)
	  printf("%d %d %d\n",c4[i].number,c4[i].d,c4[i].c);  
	return 0;
} 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值