第3題-參加博覽會
不能一個一個遍歷會議,因為可能會有其他會議滿足要求,所以需要統計當前天數滿足要求的會議,從中選擇k個
#include<bits/stdc++.h>
using namespace std;
const int N = 1e5 + 5;
vector<pair<int, int>>num;
int main(){
int n, k;
cin>>n>>k;
for(int i = 0; i < n; i ++){
int u, v;
cin>>u>>v;
num.push_back({u, v});
}
sort(num.begin(), num.end());
int ans = 0, id = 0, st = 1;
priority_queue<int>q;
while(id < n || !q.empty()){
while(!q.empty() && abs(q.top()) < st){
q.pop();
}
while(id < n && num[id].first <= st){
q.push(-num[id].second);
id ++;
}
if(q.empty()){
if(id == n) break;
st = max(st, num[id].first);
}
while(id < n && num[id].first <= st){
q.push(-num[id].second);
id ++;
}
for(int i = 0; i < k; i ++){
if(!q.empty()){
ans ++;
q.pop();
}
}
st ++;
}
cout<<ans<<endl;
return 0;
}