Submission #204529

#TimeUsernameProblemLanguageResultExecution timeMemory
204529SaboonHotel (CEOI11_hot)C++14
100 / 100
1315 ms46392 KiB
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

const int maxn = 1e6 + 10;

pair<int,int> offer[maxn];

int main(){
	ios_base::sync_with_stdio(false);
	int n, m, o;
	cin >> n >> m >> o;
	multiset<pair<int,int> > room;
	for (int i = 0; i < n; i++){
		int p, c;
		cin >> p >> c;
		room.insert({c, p});
	}
	for (int i = 0; i < m; i++){
		int v, d;
		cin >> v >> d;
		offer[i] = {v, d};
	}
	sort(offer, offer + m);
	reverse(offer, offer + m);
	vector<int> vals;
	for (int i = 0; i < m; i++){
		auto it = room.lower_bound({offer[i].second, 0});
		if (it == room.end())
			continue;
		vals.push_back(offer[i].first - it->second);
		room.erase(it);
	}
	sort(vals.rbegin(), vals.rend());
	ll sum = 0;
	for (int i = 0; i < min((int)vals.size(), o); i++)
		sum += max(0, vals[i]);
	cout << sum << '\n';
}
#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...