PAT-1005.德才论(25)

30 篇文章 0 订阅
29 篇文章 0 订阅
#include<iostream>
using namespace std;
 int N,L,H;
struct stu 
{
int B,C,D,Z;
};
void order(stu s[],int X);
int main()
{
stu s[100001];
int i,j,a[5]={0},M=0;
stu A1[100001],A2[100001],A3[100001],A4[100001];
cin>>N>>L>>H;
for(i=0;i<N;i++)
{
scanf("%d%d%d",&s[i].B,&s[i].D,&s[i].C);
s[i].Z=s[i].D+s[i].C;
if(s[i].D>=H&&s[i].C>=H)
{
A1[a[0]]=s[i];a[0]++;
}
else if(s[i].D>=H&&s[i].C>=L)
{
A2[a[1]]=s[i];a[1]++;
}
else if(s[i].D>=s[i].C&&s[i].C>=L)
{
A3[a[2]]=s[i];a[2]++;
}
else if(s[i].D>=L&&s[i].C>=L)
{
A4[a[3]]=s[i];a[3]++;
}
}
M=a[1]+a[2]+a[3]+a[0];
order(A1,a[0]);
order(A2,a[1]);
order(A3,a[2]);
order(A4,a[3]);
printf("%d",M);


for(j=0;j<a[0];j++)
printf("\n%d %d %d",A1[j].B,A1[j].D,A1[j].C);
for(j=0;j<a[1];j++)
printf("\n%d %d %d",A2[j].B,A2[j].D,A2[j].C);
for(j=0;j<a[2];j++)
printf("\n%d %d %d",A3[j].B,A3[j].D,A3[j].C);
for(j=0;j<a[3];j++)
printf("\n%d %d %d",A4[j].B,A4[j].D,A4[j].C);
return 0;
}


void order(stu s[],int X)
{
int i,j,k;
stu temp;
for(i=1;i<X;i++)
{
for(j=0;j<i;j++)
{
if(s[i].Z>s[j].Z)
{
temp=s[i];
for(k=i;k>j;k--)
s[k]=s[k-1];
s[k]=temp;
break;
}
else if(s[i].Z==s[j].Z)
{
if(s[i].D>s[j].D)
{
temp=s[i];
for(k=i;k>j;k--)
s[k]=s[k-1];
s[k]=temp;
break;
}
else if(s[i].D==s[j].D)
{
if(s[i].B<s[j].B)
{
temp=s[i];
for(k=i;k>j;k--)
s[k]=s[k-1];
s[k]=temp;
break;

}}}}}}


/*****************************************/

输入的时候直接判断该输入输入哪个等级的人才,然后将其存入对应的结构体数组。然后对每个结构体数组按要求进行排序输出。使用printf输出可以比cout输出节省运行时间,避免运行超时。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值