| # | Time | Username | Problem | Language | Result | Execution time | Memory |
|---|---|---|---|---|---|---|---|
| 1326816 | dungnt | 학교 설립 (IZhO13_school) | C++20 | 78 ms | 6536 KiB |
#include<bits/stdc++.h>
#define ll long long
#define pii pair<int, int>
#define fi first
#define se second
using namespace std;
const int N = 3e5 + 5;
int n, m, s;
pii p[N];
ll pre[N], suf[N];
bool cmp(pii a, pii b)
{
return a.fi - a.se > b.fi - b.se;
}
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
#define name "task"
if(fopen(name".inp", "r"))
{
freopen(name".inp", "r", stdin);
freopen(name".out", "w", stdout);
}
cin >> n >> m >> s;
for(int i = 1; i <= n; i++)
cin >> p[i].fi >> p[i].se;
sort(p + 1, p + n + 1, cmp);
priority_queue<int, vector<int>, greater<int>> pq;
ll sum = 0;
for(int i = 1; i <= n; i++)
{
pq.push(p[i].fi);
sum += p[i].fi;
if(pq.size() > m)
{
sum -= pq.top();
pq.pop();
}
if(pq.size() == m) pre[i + 1] = sum;
}
pq = priority_queue<int, vector<int>, greater<int>>();
sum = 0;
for(int i = n; i >= 1; i--)
{
pq.push(p[i].se);
sum += p[i].se;
if(pq.size() > s)
{
sum -= pq.top();
pq.pop();
}
if(pq.size() == s) suf[i + 1] = sum;
}
ll ans = 0;
for(int i = m; i <= n - s; i++)
ans = max(ans, pre[i] + suf[i + 1]);
cout << ans;
}
Compilation message (stderr)
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
