Submission #1179285

#TimeUsernameProblemLanguageResultExecution timeMemory
1179285jiahcGym Badges (NOI22_gymbadges)C++20
100 / 100
104 ms16520 KiB
// Source: https://usaco.guide/general/io
// https://ide.usaco.guide/OM6xlbnXP1WD4A45uIV

#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
typedef pair<int, int> pii;
const int N = 500010;

int n, ans;
struct gym {
    ll sum, l, x;
    bool operator <(const gym &W)const {
        return sum < W.sum;
    }
}a[N];
priority_queue<ll, vector<ll>, less<ll> > q;

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);

    cin >> n;
    for (int i = 1; i <= n; i++) {
        ll x;
        cin >> x;
        a[i].sum = a[i].x = x;
    }
    for (int i = 1; i <= n; i++) {
        ll l;
        cin >> l;
        a[i].sum += l;
        a[i].l = l;
    }

    sort(a + 1, a + n + 1);

    ll s = 0;
    for (int i = 1; i <= n; i++) {
        if (s <= a[i].l) {
            s += a[i].x;
            ans++;
            q.push(a[i].x);
        } else {
            if (q.size() == 0) continue;
            if (a[i].x >= q.top()) continue;
            s -= q.top();
            q.pop();
            s += a[i].x;
            q.push(a[i].x);
        }
    }

    cout << ans << "\n";
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...