L1-088 静静的推荐(得分20)
本题没什么好讲,题干可以点击传送门查看
这一题主要是理解题意,然后有一个比较巧的地方就是同一分数段的只能招K个
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
vector<int> t,p;
int main()
{
int n,k,s;
cin>>n>>k>>s;
while(n--)
{
int tt,pp;cin>>tt>>pp;
if(pp >= s && tt >= 175) p.push_back(pp);
if(pp < s && tt >= 175) t.push_back(tt);
}
sort(t.begin(),t.end());
int total = p.size();
int t_size = t.size();
for(int i = 0 ; i < t.size() ;)//如果加上if条件,这里的t.size()可以不变
{
int j = i;
while(j < t.size() && t[j] == t[i]) j++;
//同一个分数的人最多只能招k个
total += min(k,j-i);
i = j;
}
cout<<total;
return 0;
}

浙公网安备 33010602011771号