一、问题描述
天梯赛结束后,某企业的人力资源部希望组委会能推荐一批优秀的学生,这个整理推荐名单的任务就由静静姐负责。企业接受推荐的流程是这样的:
- 只考虑得分不低于 175 分的学生;
- 一共接受 K 批次的推荐名单;
- 同一批推荐名单上的学生的成绩原则上应严格递增;
- 如果有的学生天梯赛成绩虽然与前一个人相同,但其参加过 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;
}
标签:int,5.9,推荐,PTA,学生,打卡,成绩,建民 From: https://www.cnblogs.com/cor0000/p/17379902.html