Submission #1282051

#TimeUsernameProblemLanguageResultExecution timeMemory
1282051nlsosadSure Bet (CEOI17_sure)C++20
100 / 100
112 ms3560 KiB
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define f first
#define s second
using ld = long double;
ld a[100001], b[100001];
signed main(){
	int n;
	cin >> n;
	for (int i = 1;i<=n;++i){
		cin >> a[i] >> b[i];
	}
	ld res = 0;
	ld l = 0, r = 1e9;
	sort(a+1, a+n+1);
	sort(b+1, b+n+1);
	while(abs(l-r) >= 1e-6){
		ld mid = (l+r)/2.0;
		ld s1 = 0, s2 = 0;
		int t1 = n, t2 = n;
		while(s1 < mid or s2 < mid){
			bool check = false;
			while(s1 < mid and t1 >= 1){
				s1 += a[t1]-1.0;
				check = true;
				s2 -= 1.0;
				t1--;
			}
			while(s2 < mid and t2>= 1){
				s2 += b[t2]-1.0;
				s1 -= 1.0;
				check = true;
				t2--;
			}
			if(!check)break;
		}
		if(s1 >= mid and s2>=mid){
			res = mid;
			l = mid;
		}else r = mid;
	}
	cout << fixed << setprecision(4) << res;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...