제출 #1216359

#제출 시각아이디문제언어결과실행 시간메모리
1216359trimkusLet's Win the Election (JOI22_ho_t3)C++20
23 / 100
2596 ms444 KiB
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using ld = long double;


int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);
	int n, k;
	cin >> n >> k;
	//~ cerr << "A\n";
	vector<array<ld, 2>> a(n);
	for (int i = 0; i < n; ++i) {
		for (int j = 0; j < 2; ++j) {
			cin >> a[i][j];	
		}
	}
	ld res = LLONG_MAX;
	for (int i = 0; i < (1 << n); ++i) {
		vector<ld> pick1, pick2;
		for (int j = 0; j < n; ++j) {
			if (i >> j & 1) pick1.push_back(a[j][1]);
			else pick2.push_back(a[j][0]);
		}
		sort(begin(pick1), end(pick1));
		sort(begin(pick2), end(pick2));
		if (pick1.size() > 0 && pick1[0] == -1) continue;
		ld tim = 0;
		ld mult = 1;
		for (int i = 0; i < min(k, (int)pick1.size()); ++i) {
			tim += pick1[i] / mult;
			mult += 1;
		}
		for (int i = 0; i < k - (int)pick1.size(); ++i) {
			//~ cerr << i << " " << pick2.size() << endl;
			tim += pick2[i] / mult;
		}
		//~ cerr << tim << endl;
		res = min(res, tim);
	}
	cout << fixed << setprecision(3) << res << "\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...