Submission #138003

#TimeUsernameProblemLanguageResultExecution timeMemory
138003beso123Schools (IZhO13_school)C++14
5 / 100
2057 ms13564 KiB
#include <bits/stdc++.h>
#define int long long
#define pii pair<int,int>
#define x first
#define y second
using namespace std;
int n,s,m,ans,rm,rs;
multiset <pii> sp,ms;
main(){
cin>>n>>s>>m;
for(int k=1;k<=n;k++){
    int a,b;
    cin>>a>>b;
    if(rm==0 && rs==0){
        if(a>b){
            rs++;
        sp.insert({a,b});
        ans=a;
        }
        else{
            rm++;
            ms.insert({b,a});
            ans=b;
        }
    }
    else{
     pii a1=*sp.begin(),b1=*ms.begin();
     if(a1.x<a)
        if(b1.x>=b){
                  if(rs==s){
                sp.erase(sp.begin());
            sp.insert({a,b});
            ans-=a1.x;
            ans+=a;
                    }
                    else{
                        sp.insert({a,b});
                        ans+=a;
                        rs++;
                    }
                    continue;
        }
           if(b1.x<b)
        if(a1.x>=a){
                if(rm==m){
                ms.erase(ms.begin());
            ms.insert({b,a});
            ans-=b1.x;
            ans+=b;
            }
            else{
             ms.insert({b,a});
             rm++;
             ans+=b;
            }
            continue;
        }
            int cnt1=ans,cnt2=ans;

            if(rs==s)
            cnt1=ans-a1.x+a;
            else cnt1=ans+a;

            if(rm==m)
            cnt2=ans-b1.x+b;
            else cnt2=ans+b;

            if(cnt1<ans && cnt2<ans)
                continue;

            if(cnt1>=cnt2){
                    if(rs==s){
                sp.erase(sp.begin());
            sp.insert({a,b});
            ans-=a1.x;
            ans+=a;
                if(rm!=m){
                ms.insert({a1.y,a1.x});
                ans+=a1.y;
                rm++;
                }
                else{
                    if(a1.y>b1.x){
                        ms.erase(ms.begin());
                        ms.insert({a1.y,a1.x});
                        ans-=b1.x;
                        ans+=a1.y;
                    }
                }
                }
                    else{
                        sp.insert({a,b});
                        ans+=a;
                        rs++;
                    }
            }
            else{
                    if(rm==m){
                ms.erase(ms.begin());
            ms.insert({b,a});
            ans-=b1.x;
            ans+=b;
            }
            else{
             ms.insert({b,a});
             rm++;
             ans+=b;
            }
                if(rs!=s){
                sp.insert({b1.y,b1.x});
                rs++;
                ans+=b1.y;
                }
                else{
                    if(b1.y>a1.x){
                        sp.erase(ms.begin());
                        sp.insert({b1.y,b1.x});
                        ans-=a1.x;
                        ans+=b1.y;
                    }
                }
            }
    }
    }
cout<<ans;
return 0;
}

Compilation message (stderr)

school.cpp:9:6: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
 main(){
      ^
#Verdict Execution timeMemoryGrader output
Fetching results...