Submission #1096968

# Submission time Handle Problem Language Result Execution time Memory
1096968 2024-10-05T15:14:25 Z codexistent Schools (IZhO13_school) C++14
60 / 100
145 ms 12248 KB
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define MAXN 300005
#define FOR(i, a, b) for(ll i = a; i <= b; i++)

ll n, t[2], pfx[MAXN], r = 0;
vector<array<ll, 2>> v(MAXN);

int main(){
    cin >> n >> t[0] >> t[1];
    FOR(i, 1, n) cin >> v[i][0] >> v[i][1];

    sort(begin(v) + 1, begin(v) + 1 + n, [&](const auto &a, const auto &b) {
        return a[0] - a[1] > b[0] - b[1];
    });

    priority_queue<ll> pq;
    pfx[0] = 0;
    FOR(i, 1, n){
        pfx[i] = pfx[i - 1];
        pfx[i] += v[i][0], pq.push(-v[i][0]);
        while((ll)pq.size() > t[0]) pfx[i] += pq.top(), pq.pop();
    }

    priority_queue<ll>().swap(pq);
    ll sfx = 0;
    for(ll i = n; i >= 1; i--){
        sfx += v[i][1];
        pq.push(-v[i][1]);
        while((ll)pq.size() > t[1]) sfx += pq.top(), pq.pop();

        if((ll)pq.size() == t[1] && i - 1 >= t[1]) r = max(r, sfx + pfx[i - 1]);
    }

    cout << r << endl;
}
# Verdict Execution time Memory Grader output
1 Correct 3 ms 4956 KB Output is correct
2 Incorrect 2 ms 4956 KB Output isn't correct
3 Correct 2 ms 4956 KB Output is correct
4 Incorrect 2 ms 4956 KB Output isn't correct
5 Incorrect 2 ms 4956 KB Output isn't correct
6 Incorrect 2 ms 4952 KB Output isn't correct
7 Correct 4 ms 5212 KB Output is correct
8 Correct 4 ms 5212 KB Output is correct
9 Correct 5 ms 5296 KB Output is correct
10 Correct 5 ms 5208 KB Output is correct
11 Incorrect 5 ms 5208 KB Output isn't correct
12 Incorrect 4 ms 5208 KB Output isn't correct
13 Correct 17 ms 6104 KB Output is correct
14 Correct 40 ms 6804 KB Output is correct
15 Correct 71 ms 8272 KB Output is correct
16 Incorrect 83 ms 10408 KB Output isn't correct
17 Incorrect 101 ms 10756 KB Output isn't correct
18 Correct 113 ms 11116 KB Output is correct
19 Correct 137 ms 11440 KB Output is correct
20 Correct 145 ms 12248 KB Output is correct