답안 #1096970

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1096970 2024-10-05T15:18:08 Z codexistent 학교 설립 (IZhO13_school) C++14
65 / 100
152 ms 11488 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 + 1; i >= 1; i--){
        if(i <= n){
            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;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 4956 KB Output is correct
2 Correct 2 ms 4956 KB Output is correct
3 Correct 2 ms 4956 KB Output is correct
4 Incorrect 2 ms 5156 KB Output isn't correct
5 Incorrect 2 ms 4956 KB Output isn't correct
6 Incorrect 2 ms 4956 KB Output isn't correct
7 Correct 5 ms 5164 KB Output is correct
8 Correct 4 ms 5144 KB Output is correct
9 Correct 4 ms 5212 KB Output is correct
10 Correct 4 ms 5208 KB Output is correct
11 Incorrect 7 ms 5088 KB Output isn't correct
12 Incorrect 4 ms 5212 KB Output isn't correct
13 Correct 18 ms 6188 KB Output is correct
14 Correct 38 ms 6672 KB Output is correct
15 Correct 70 ms 7504 KB Output is correct
16 Incorrect 87 ms 9896 KB Output isn't correct
17 Incorrect 104 ms 10232 KB Output isn't correct
18 Correct 116 ms 9964 KB Output is correct
19 Correct 139 ms 10740 KB Output is correct
20 Correct 152 ms 11488 KB Output is correct