Submission #1324391

#TimeUsernameProblemLanguageResultExecution timeMemory
1324391i_love_kim_ji_wonSchools (IZhO13_school)C++20
95 / 100
94 ms10568 KiB
// I ♡ 鞠婧祎
// #pragma GCC optimize("Ofast")
// #pragma GCC target("avx,avx2,fma")
#include <bits/stdc++.h>
#define freopen(name) if(fopen(name".INP","r")) {freopen (name".INP","r",stdin); freopen (name".OUT","w",stdout);}
using namespace std;

using ll = long long;

void justDoIt();

int main() {
    // freopen("");
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    justDoIt();
    return 0;
}

const int N = 3e5 + 5;

ll dp[105][105][105];
int a[N], b[N];
ll l[N], r[N];

void test() {
    int n, m, s;
    cin >> n >> m >> s;
    vector<int> id;
    for (int i = 1; i <= n; i++) {
        cin >> a[i] >> b[i];
        id.push_back(i);
    }
    sort(id.begin(), id.end(), [] (int x, int y) {
        return a[x] - b[x] > a[y] - b[y];
    });
    priority_queue<ll, vector<ll>, greater<ll>> q;
    ll sum = 0;
    for (int i = 1; i <= n; i++) {
        int it = id[i - 1];
        q.push(a[it]);
        sum += a[it];
        while (q.size() > m) {
            sum -= q.top(); q.pop();
        }
        l[i] = (q.size() == m ? sum : -1e18);
    }
    while (q.size() > 0) {q.pop();}
    sum = 0;
    for (int i = n; i >= 1; i--) {
        int it = id[i - 1];
        q.push(b[it]);
        sum += b[it];
        while (q.size() > s) {
            sum -= q.top(); q.pop();
        }
        r[i] = (q.size() == s ? sum : -1e18);
    }
    ll res = -1e18;
    for (int i = 1; i < n; i++) {
        res = max(res, l[i] + r[i + 1]);
    }
    cout << res;
}

void justDoIt() {
    int t = 1;
    // cin >> t;
    for (int tests = 1; tests <= t; tests++) {
        test();
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...