建民打卡日记5.9

发布时间 2023-05-09 16:29:14作者: cor0000

一、问题描述

天梯赛结束后,某企业的人力资源部希望组委会能推荐一批优秀的学生,这个整理推荐名单的任务就由静静姐负责。企业接受推荐的流程是这样的:

  • 只考虑得分不低于 175 分的学生;
  • 一共接受  批次的推荐名单;
  • 同一批推荐名单上的学生的成绩原则上应严格递增;
  • 如果有的学生天梯赛成绩虽然与前一个人相同,但其参加过 PAT 考试,且成绩达到了该企业的面试分数线,则也可以接受。

给定全体参赛学生的成绩和他们的 PAT 考试成绩,请你帮静静姐算一算,她最多能向企业推荐多少学生?

二、流程设计

首先通过PTA的一定能够选上,其次通过map记录每个分数的分数(不包含通过PTA的人),然后遍历map跟批次数量进行比较,最后加上通过PTA的人即可。

三、代码实现

#include<bits/stdc++.h>
using namespace std;
int n,k,s,x,y,ans,sum;
map<int,int>mp;
int main(){
	cin>>n>>k>>s;
	for(int i=0;i<n;i++){
		cin>>x>>y;
		if(x>=175){
			if(y>=s) sum++;	//记录通过PTA考试的人数 
			else mp[x]+=1;
		}
	}
	for(auto it:mp) ans+=it.second>=k?k:it.second;
	cout<<ans+sum;
	return 0;
}