제출 #1324534

#제출 시각아이디문제언어결과실행 시간메모리
1324534ngodangminh학교 설립 (IZhO13_school)C++20
100 / 100
69 ms10216 KiB
#include<bits/stdc++.h>
#define fi first
#define se second
using namespace std;
using ll=long long;
const int N=300005;
int n,m,s;
ll ans, l[N], r[N], cnt;
priority_queue<int, vector<int>, greater<int>>pq;
pair<ll,ll>a[N];
int main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);cout.tie(0);
    cin>>n>>m>>s;
    for(int i=1;i<=n;i++)
        cin>>a[i].fi>>a[i].se;
    sort(a+1,a+n+1,[](const pair<ll,ll>&x,const pair<ll,ll>&y){
        return (x.fi-x.se)>(y.fi-y.se);
    });
    for(int i=1;i<=n;i++)
        if(i<=m){
            cnt+=a[i].fi;
            pq.push(a[i].fi);
            l[i]=cnt;
        } else {
            if(a[i].fi>pq.top()){
                cnt-=pq.top();
                pq.pop();
                cnt+=a[i].fi;
                pq.push(a[i].fi);
            }
            l[i]=cnt;
        }
    while(!pq.empty()) pq.pop();
    cnt=0;
    for(int i=n;i>=1;i--)
         if(n-i+1<=s){
            cnt+=a[i].se;
            pq.push(a[i].se);
            r[i]=cnt;
        } else {
            if(a[i].se>pq.top()){
                cnt-=pq.top();
                pq.pop();
                cnt+=a[i].se;
                pq.push(a[i].se);
            }
            r[i]=cnt;
         }
    for(int i=m;i<n-s+1;i++)
    //cout<<i<<' '<< l[i]<<" "<<r[i]<<endl;
        ans=max(ans,l[i]+r[i+1]);
    cout<<ans;
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...