제출 #1309373

#제출 시각아이디문제언어결과실행 시간메모리
1309373thuhienneLet's Win the Election (JOI22_ho_t3)C++20
28 / 100
2595 ms456 KiB
#include <bits/stdc++.h>
using namespace std;

using ll = long long;

#define re exit(0);

int n,k;
int a[509],b[509];

int main() {
  ios_base::sync_with_stdio(0);cin.tie(nullptr);

	cin >> n >> k;
	for (int i = 1;i <= n;i++) cin >> a[i] >> b[i];

	double res = 1e9;

	for (int mask = 0;mask < (1 << n);mask++) {
		bool checkmask = 1;
		for (int i = 1;i <= n;i++) if ((mask >> (i - 1) & 1) && b[i] == -1) {
			checkmask = 0;
			break;
		}
		if (!checkmask) continue;
		
		vector <int> more;
		for (int i = 1;i <= n;i++) if (mask >> (i - 1) & 1) more.push_back(b[i]);
		
		sort(more.begin(),more.end());
		double totaltime = 0;int cnt = 1;
		
		for (int i = 0;i < more.size();i++) {
			totaltime += 1.0 * more[i] / cnt;
			cnt++;
		}
		
		more.clear();
		for (int i = 1;i <= n;i++) if (!(mask >> (i - 1) & 1)) more.push_back(a[i]);
		
		sort(more.begin(),more.end());
		int voted = cnt - 1;
		for (int i = 0;i < more.size() && voted < k;i++) {
			totaltime += 1.0 * more[i] / cnt;
			voted++;
		}
		
		res = min(res,totaltime);
		
	}
	
	cout << setprecision(4) << fixed << res;

}
#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...