# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
96223 | 2019-02-07T08:55:55 Z | Retro3014 | Schools (IZhO13_school) | C++17 | 160 ms | 11232 KB |
#include <iostream> #include <vector> #include <algorithm> #include <stdio.h> #include <queue> using namespace std; typedef long long ll; #define MAX_N 300000 int N, M, S; struct ST{ ST (int x, int y) : x(x), y(y) {} int x, y; bool operator <(const ST &a)const{ if(x==a.x) return y<a.y; return x>a.x; } }; vector<ST> v; priority_queue<ll> pq; struct S2{ S2 (ll x, int y) : x(x), y(y) {} ll x; int y; bool operator <(const S2 &a)const{ if(a.x==x) return y>a.y; return a.x<x; } }; priority_queue<S2> pq2, pq3; ll ans; bool chk[MAX_N+1]; int main(){ scanf("%d%d%d", &N, &M, &S); for(int i=0; i<N; i++){ int a, b; scanf("%d%d", &a, &b); v.push_back({a, b}); }sort(v.begin(), v.end()); //for(int i=0; i<N; i++){ // cout<<v[i].x<<' '<<v[i].y<<endl; //}cout<<endl; ll sum = 0; for(int i=0; i<M; i++){ sum+=v[i].x; pq.push((ll)(v[i].y-v[i].x)); } ll sum2 = 0; for(int i=M; i<N; i++){ if(S==0) continue; if(pq2.size()<S){ pq2.push({(ll)v[i].y, i}); sum2+=(ll)v[i].y; chk[i] = true; } else{ if(pq2.top().x<v[i].y){ sum2-=pq2.top().x; sum2+=(ll)v[i].y; chk[pq2.top().y] = false; chk[i] = true; pq2.pop(); pq2.push({v[i].y, i}); } } } for(int i=0; i<=S; i++){ ans = max(ans, sum+sum2); if(i==S) continue; sum += (ll)v[M+i].x; pq.push((ll)(v[M+i].y-v[M+i].x)); //cout<<'&'<<pq.top()<<endl; sum += pq.top(); pq.pop(); if(chk[M+i]){ sum2 -= (ll)v[M+i].y; pq3.push({(ll)v[M+i].y, M+i}); }else{ //cout<<'*'<<pq2.top().x<<endl; while(!pq2.empty() && !pq3.empty() && pq2.top().x==pq3.top().x && pq2.top().y==pq3.top().y) { pq2.pop(); pq3.pop(); } sum2 -= pq2.top().x; chk[pq2.top().y] = false; pq2.pop(); } } printf("%lld", ans); return 0; }
Compilation message
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 376 KB | Output is correct |
2 | Correct | 2 ms | 376 KB | Output is correct |
3 | Correct | 2 ms | 376 KB | Output is correct |
4 | Correct | 2 ms | 256 KB | Output is correct |
5 | Correct | 2 ms | 380 KB | Output is correct |
6 | Correct | 2 ms | 128 KB | Output is correct |
7 | Correct | 3 ms | 504 KB | Output is correct |
8 | Correct | 3 ms | 504 KB | Output is correct |
9 | Correct | 3 ms | 504 KB | Output is correct |
10 | Correct | 4 ms | 376 KB | Output is correct |
11 | Correct | 5 ms | 504 KB | Output is correct |
12 | Correct | 4 ms | 504 KB | Output is correct |
13 | Correct | 14 ms | 1140 KB | Output is correct |
14 | Correct | 36 ms | 1944 KB | Output is correct |
15 | Correct | 56 ms | 2540 KB | Output is correct |
16 | Correct | 81 ms | 11232 KB | Output is correct |
17 | Correct | 121 ms | 6500 KB | Output is correct |
18 | Correct | 114 ms | 6372 KB | Output is correct |
19 | Correct | 136 ms | 6944 KB | Output is correct |
20 | Correct | 160 ms | 7516 KB | Output is correct |