제출 #1337197

#제출 시각아이디문제언어결과실행 시간메모리
1337197michael12Gym Badges (NOI22_gymbadges)C++20
100 / 100
171 ms12484 KiB
#include<iostream>
#include<vector>
#include<set>
#include<map>
#include<string>
#include<stack>
#include<queue>
#include<string.h>
#include<array>
#include<algorithm>
#include<cmath>
#define ff first
#define ss second
#define endl '\n'
#define int long long
const int maxn = 5e5;
const int oo = 1e18;
using namespace std;
signed main(){
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    int n;
    cin >> n;
    vector<pair<int, int>> D(n + 1);

    for(int i = 1; i <= n; i++){
        cin >> D[i].ff;
    }
    for(int i = 1; i <= n; i++){
        cin >> D[i].ss;
    }
    sort(D.begin() + 1, D.begin() + n + 1, [&](pair<int,int> p1, pair<int,int> p2){
    return (p1.ff + p1.ss) < (p2.ff + p2.ss);
    });
    priority_queue<int> pq;
    int cur = 0;
    for(int i = 1; i <= n; i++){
        if(cur <= D[i].ss){
            cur += D[i].ff;
            pq.push(D[i].ff);
        }
        else{
            if(pq.size() > 0 && pq.top() > D[i].ff){
                cur -= pq.top();
                cur += D[i].ff;
                pq.pop();
                pq.push(D[i].ff);
            }
        }
    }
    cout << pq.size();
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...