Submission #1366656

#TimeUsernameProblemLanguageResultExecution timeMemory
1366656djangg7Grilled Bottle (KAISTRUN26SPRING_D)C++20
100 / 100
573 ms10196 KiB
#include <bits/stdc++.h>
#define int long long
using namespace std;

typedef pair<int, int> pii;

int a[200500];
vector<pii> v;
int ans = 0;

int32_t main(){
    ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
    int n, m;
    cin >> n >> m;
    for(int i = 1; i <= n; i++){
        int f, va;
        cin >> f >> va;
        v.push_back({f,va});
    }

    sort(v.begin(), v.end());
    reverse(v.begin(), v.end());

    for(int i = 1; i <= n; i++){
        cin >> a[i];
    }

    int l = 0;
    int h = m;

    while(l <= h){
        int flag = 1;
        int mid = l + h >> 1;
        vector<int> vi;
        for(int i = 1; i <= mid; i++){
            vi.push_back(a[i]);
        }
        sort(vi.begin(), vi.end(), greater<int>());

        priority_queue<int> pq;
        int ptr = 0;
        int sum = 0;
        for(int i = 0; i < vi.size(); i++){
            while(v.size() != ptr && v[ptr].first >= vi[i]){
                pq.push(v[ptr].second);
                ptr++;
            }
            if(pq.empty()){
                flag = 0;
                break;
            }
            sum += pq.top();
            pq.pop();
        }
        if(!flag){
            h = mid - 1;
        }
        else{
            ans = sum;
            l = mid + 1;
        }
    }
    cout << h << ' ' << ans << '\n';
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...