Submission #875417

#TimeUsernameProblemLanguageResultExecution timeMemory
875417lalig777Hotel (CEOI11_hot)C++14
100 / 100
700 ms26452 KiB
#include <iostream>
#include <vector>
#include <algorithm>
#include <queue>
using namespace std;

int main(){
	int n, m, o;
	priority_queue<int>pq;
	cin>>n>>m>>o;
	vector<pair<int,int> >habitacions(n);
	vector<int>max_prof(n, 0);
	vector<pair<int,int> >offers(m);
	for (int i=0; i<n; i++) cin>>habitacions[i].first>>habitacions[i].second;
	sort(habitacions.begin(), habitacions.end());
	for (int i=0; i<m; i++) cin>>offers[i].second>>offers[i].first;
	sort(offers.begin(), offers.end());
	int k=0;
	for (int i=0; i<n; i++){
		int max_people=habitacions[i].second;
		for (int j=k; j<m; j++){
			if (offers[j].first<=max_people) pq.push(offers[j].second);
			else{
				k=j;
				break;
			}if (j==m-1) k=m;
		}if (!pq.empty()){
			max_prof[i]=max(0, pq.top()-habitacions[i].first);
			pq.pop();
		}
	}sort(max_prof.begin(), max_prof.end());
	long long int ans=0;
	for (int i=n-1; i>=n-o; i--) ans+=max_prof[i];
	cout<<ans<<endl;
	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...