Submission #553029

#TimeUsernameProblemLanguageResultExecution timeMemory
553029HanksburgerSure Bet (CEOI17_sure)C++17
100 / 100
91 ms5164 KiB
#include <bits/stdc++.h>
using namespace std;
long long a[100005], b[100005], suma[100005], sumb[100005];
long long f(long long x, long long y)
{
	return min(suma[x]-y*10000, sumb[y]-x*10000);
}
int main()
{
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	long long n, ans=0;
	cin >> n;
	for (long long i=1; i<=n; i++)
	{
		double x, y;
		cin >> x >> y;
		a[i]=x*10000.0-9999.9;
		b[i]=y*10000.0-9999.9;
	}
	sort(a+1, a+n+1, greater<long long>());
	sort(b+1, b+n+1, greater<long long>());
	for (long long i=1; i<=n; i++)
		suma[i]=suma[i-1]+a[i];
	for (long long i=1; i<=n; i++)
		sumb[i]=sumb[i-1]+b[i];
	for (long long i=0; i<=n; i++)
	{
		long long l=0, r=n;
		while (l<r)
		{
			long long mid1=(l*2+r)/3, mid2=(l+r*2+1)/3;
			long long res1=f(i, mid1), res2=f(i, mid2);
			if (res1>res2)
				r=mid2-1;
			else if (res1<res2)
				l=mid1+1;
			else
			{
				l=mid1;
				r=mid2-1;
			}
		}
		ans=max(ans, f(i, l));
	}
	cout << fixed << setprecision(4) << ans/10000.0;
	return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...