前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PAT (Basic Level) Practice-1015 德才论 (25 分)

PAT (Basic Level) Practice-1015 德才论 (25 分)

作者头像
杨鹏伟
发布2022-05-05 20:27:53
2540
发布2022-05-05 20:27:53
举报
文章被收录于专栏:ypw

输入格式: 输入第一行给出 3 个正整数,分别为:N(≤10 5 ),即考生总数;L(≥60),为录取最低分数线,即德分和才分均不低于 L 的考生才有资格被考虑录取;H(<100),为优先录取线——德分和才分均不低于此线的被定义为“才德全尽”,此类考生按德才总分从高到低排序;才分不到但德分到线的一类考生属于“德胜才”,也按总分排序,但排在第一类考生之后;德才分均低于 H,但是德分不低于才分的考生属于“才德兼亡”但尚有“德胜才”者,按总分排序,但排在第二类考生之后;其他达到最低线 L 的考生也按总分排序,但排在第三类考生之后。

随后 N 行,每行给出一位考生的信息,包括:准考证号 德分 才分,其中准考证号为 8 位整数,德才分为区间 [0, 100] 内的整数。数字间以空格分隔。

输出格式: 输出第一行首先给出达到最低分数线的考生人数 M,随后 M 行,每行按照输入格式输出一位考生的信息,考生按输入中说明的规则从高到低排序。当某类考生中有多人总分相同时,按其德分降序排列;若德分也并列,则按准考证号的升序输出。

思路:其实就是一个排序问题,我们要将其分解为四个小排序问题,然后分别处理即可。详细见代码

代码语言:javascript
复制
#include<bits/stdc++.h>
#define MAXN 100100
using namespace std;
typedef long long ll;

ll N,L,H;
ll aa,bb,cc,dd;
ll k1=0,k2=0,k3=0,k4=0;
ll tot = 0;
struct node{
	ll xuhao;
	ll de;
	ll cai;
	ll sum;
}one[MAXN],second[MAXN],third[MAXN],fourth[MAXN];

ll cmpp(node x,node y){
	if(x.sum == y.sum){
	  if(x.de == y.de) return x.xuhao < y.xuhao;
	  else return x.de > y.de;
    }
	else
		return x.sum > y.sum;  
}

int main(){
	cin>>N>>L>>H;
	for(ll i=0;i<N;i++){
		cin>>aa>>bb>>cc;
		if(bb>=L && cc>=L) tot ++;
		if(bb>=H && cc>=H){//德才双全 
		   one[k1].xuhao = aa;
		   one[k1].de = bb;
		   one[k1].cai = cc;
		   one[k1].sum = bb + cc;
		   k1++;
	    }
	    else if(bb>=H &&(cc>=L && cc<H)){//德胜才 
	    	second[k2].xuhao = aa;
	    	second[k2].de = bb;
	    	second[k2].cai = cc;
	    	second[k2].sum = bb+cc;
	    	k2++;
		}
		else if((bb < H && bb >=L) && (cc < H && cc>=L) && bb >= cc){//才胜德 
			 third[k3].xuhao = aa;
			 third[k3].de = bb;
			 third[k3].cai = cc;
			 third[k3].sum = bb+cc;
			 k3++;
		}
		else if(bb>=L && cc>=L){
			fourth[k4].xuhao = aa;
			fourth[k4].de = bb;
			fourth[k4].cai = cc;
			fourth[k4].sum = bb+cc;
			k4++;
		}
	}
	 
	sort(one,one+k1,cmpp);
	sort(second,second+k2,cmpp);
	sort(third,third+k3,cmpp);
	sort(fourth,fourth+k4,cmpp);
	
	cout<<tot<<endl;
	for(ll i =0;i<k1;i++){
		cout<<one[i].xuhao<<" "<<one[i].de<<" "<<one[i].cai<<endl;
	}
	for(ll i =0;i<k2;i++){
		cout<<second[i].xuhao<<" "<<second[i].de<<" "<<second[i].cai<<endl;
	}
	for(ll i =0;i<k3;i++){
		cout<<third[i].xuhao<<" "<<third[i].de<<" "<<third[i].cai<<endl;
	}
	for(ll i =0;i<k4;i++){
		cout<<fourth[i].xuhao<<" "<<fourth[i].de<<" "<<fourth[i].cai<<endl;
	}
	return 0;
} 
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-01-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档