제출 #1216340

#제출 시각아이디문제언어결과실행 시간메모리
1216340trimkusLet's Win the Election (JOI22_ho_t3)C++20
11 / 100
2595 ms424 KiB
#include <bits/stdc++.h>

using namespace std;
using ld = long double;


int main() {
	int n, k;
	cin >> n >> k;
	vector<array<ld, 2>> a(n);
	for (int i = 0; i < n; ++i) {
		for (int j = 0; j < 2; ++j) {
			cin >> a[i][j];	
		}
	}
	vector<int> ord(n);
	iota(begin(ord), end(ord), 0);
	ld res = LLONG_MAX;
	auto gen = [&](auto& gen, int i, ld tim, ld pick, int have, vector<int>& ord) -> void {
		if (i == n) {
			if (have >= k) {
				//~ for (auto& u : ord) {
					//~ cerr << u << " ";
				//~ }
				//~ cerr << " = ";
				//~ cerr << tim << endl;
				res = min(res, tim);
			}
			return;
		}
		int j = ord[i];
		gen(gen, i + 1, tim, pick, have, ord);
		gen(gen, i + 1, tim + a[j][0] / pick, pick, have + 1, ord);
		if (a[j][1] != -1) gen(gen, i + 1, tim + a[j][1] / pick, pick + 1, have + 1, ord);
	};
	do {
		gen(gen, 0, 0, 1, 0, ord);
	} while (next_permutation(begin(ord), end(ord)));
	cout << 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...