Submission #210157

#TimeUsernameProblemLanguageResultExecution timeMemory
210157Andrei_CotorHotel (CEOI11_hot)C++11
100 / 100
1204 ms30200 KiB
#include<iostream>
#include<algorithm>
#include<set>

using namespace std;

int Profit[500005];
pair<int,int> O[500005];
multiset<pair<int,int> > S;

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);

    int n,m,o;
    cin>>n>>m>>o;

    for(int i=1; i<=n; i++)
    {
        int c,p;
        cin>>c>>p;
        S.insert({p,c});
    }

    for(int i=1; i<=m; i++)
        cin>>O[i].first>>O[i].second;

    sort(O+1,O+m+1);

    int nr=0;
    for(int i=m; i>=1; i--)
    {
        multiset<pair<int,int> >::iterator it=S.lower_bound({O[i].second,0});

        if(it==S.end())
            continue;

        Profit[++nr]=O[i].first-(*it).second;
        S.erase(it);
    }

    sort(Profit+1,Profit+nr+1);

    long long rez=0;
    for(int i=nr; i>=max(1,nr-o+1); i--)
    {
        if(Profit[i]<=0)
            break;
        rez+=Profit[i];
    }

    cout<<rez<<"\n";
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...