8.28華為

voids5發表於2024-08-30

第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;
}

相關文章