Submission #1163542

#TimeUsernameProblemLanguageResultExecution timeMemory
1163542gohchingjaykAkcija (COCI21_akcija)C++20
0 / 110
2 ms836 KiB
#include <bits/stdc++.h>
using namespace std;

using ll = long long;
using ull = unsigned long long;

#define int ll
#define uint ull

pair<int, int> prods[2000 + 5];
int n, k;

signed main() {
	ios_base::sync_with_stdio(false);
	cin.tie(nullptr); cout.tie(nullptr);
	
	cin >> n >> k;
	
	for (int i = 0; i < n; ++i) cin >> prods[i].second >> prods[i].first;
	
	sort(prods, prods + n);
	vector<int> untake;
	vector<int> possworsecosts;
	
	int ans = 0;
	int time = 1;
	int bought = 0;
	for (int i = 0; i < n; ++i) {
		auto [timing, cost] = prods[i];
		if (timing < time) {
			if (untake.empty()) continue;
			
			int expensive = -1;
			int expensivei = 0;
			for (int i = 0; i < untake.size(); ++i) {
				possworsecosts.emplace_back(abs(cost - untake[i]));
				if (untake[i] > expensive) {
					expensive = untake[i];
					expensivei = i;
				}
			}
			
			if (cost >= expensive) continue;
			else {
				time--;
				bought--;
				ans -= expensive;
				untake[expensivei] = untake.back();
				untake.pop_back();
			}
		}
		time++;
		bought++;
		ans += cost;
		untake.emplace_back(cost);
	}
	cout << bought << ' ' << ans << '\n';

	if (!possworsecosts.empty()) {
		sort(possworsecosts.begin(), possworsecosts.end());
		cout << bought << ' ' << ans + possworsecosts[0] << '\n';
	}
	else {
		sort(untake.begin(), untake.end());
		cout << bought - 1 << ' ' << ans - untake.back() << '\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...