Submission #1264430

#TimeUsernameProblemLanguageResultExecution timeMemory
1264430kustov_vadim_533Let's Win the Election (JOI22_ho_t3)C++20
10 / 100
5 ms328 KiB
#include <bits/stdc++.h>

using namespace std;

typedef long long ll;
typedef long double ld;
typedef unsigned long long ull;

#define len(v) (int)((v).size())

const int inf = 1e9;

inline void solve(){
	ll n, k;
	cin >> n >> k;

	vector<ll> a(n), b(n);
	for (int i = 0; i < n; ++i){
		cin >> a[i] >> b[i];
	}

	vector<int> inds(n);
	for (int i = 0; i < n; ++i){
		inds[i] = i;
	}

	sort(inds.begin(), inds.end(), [&](int i, int j){
		if (b[i] == -1 && b[j] == -1) return false;
		if (b[i] == -1 || b[j] == -1) return b[i] != -1;
		return b[i] < b[j];
	});

	ld ans = 1e100;
	for (int i = 0; i <= n; ++i){
		if (i > 0 && b[inds[i - 1]] == -1) break;

		ld time = 0;
		for (int j = 0; j < i; ++j){
			time += b[inds[j]] / (ld)(j + 1);
		}

		vector<ll> rm;
		for (int j = i; j < n; ++j){
			rm.push_back(a[inds[j]]);
		}

		sort(rm.begin(), rm.end());

		for (int j = 0; j < k - i; ++j){
			time += rm[j] / (ld)(i + 1);
		}

		ans = min(ans, time);
	}
	cout << ans << '\n';
}

signed main() {
	ios_base::sync_with_stdio(false);
	cin.tie(nullptr);
	cout.tie(nullptr);
	cout.precision(60);

	int t = 1;
//	cin >> t;

	while (t--) {
		solve();
	}
}
#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...