Submission #1248811

#TimeUsernameProblemLanguageResultExecution timeMemory
1248811arashmemarLet's Win the Election (JOI22_ho_t3)C++20
23 / 100
248 ms412 KiB
#include <bits/stdc++.h>
using namespace std;

const int maxn = 21;

pair <int, int> a[maxn];

vector <int> b, c;

int main()
{
	cout << setprecision(20);
	int n, k;
	cin >> n >> k;
	if (n > 20)
	{
		return 0;
	}
	for (int i = 0;i < n;i++)
	{
		cin >> a[i].second >> a[i].first;
		if (a[i].first == -1)
		{
			a[i].first = maxn * maxn * maxn;
		}
	}
	sort(a , a + n);

	long double rans = 1e18;

	for (int mask = 0;mask < (1 << n);mask++)
	{
		if (__builtin_popcount(mask) > k)
		{
			continue;
		}
		for (int i = 0;i < n;i++)
		{
			if (mask & (1 << i))
			{
				b.push_back(a[i].first);
			}
			else
			{
				c.push_back(a[i].second);
			}
			sort(c.begin(), c.end());
		}
		long double ans = 0;
		int tmp = 1;
		for (auto o : b)
		{
			ans += (long double)o / tmp;
			tmp++;
		}

		for (int i = 0;i < k - __builtin_popcount(mask);i++)
		{
			ans += (long double)c[i] / tmp;
		}

		rans = min(rans, ans);
		b.clear();
		c.clear();
	}
	cout << rans;
}
#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...