// #pragma GCC optomize ("Ofast")
// #pragma GCC optomize ("unroll-loops")
// #pragma GCC target ("avx,avx2,fma")
#include <bits/stdc++.h> 
  
#define F first
#define S second 
#define ll long long
#define int long long
#define pb push_back
#define all(x) (x.begin(),x.end())
#define	ios	ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);	
 
using namespace std;
  
const ll N = 5e5+9, INF = 1e18 , inf = 1e9+9, mod = 1e9+9;
double a[N];
double b[N];
signed main(){
	ios;
	int tt=1;
//	cin>>tt;
	while(tt--){
		int n;
		cin>>n;
		for(int i=1;i<=n;i++)cin>>a[i]>>b[i];
		sort(a+1,a+1+n);
		sort(b+1,b+1+n);
		reverse(a+1,a+1+n);
		reverse(b+1,b+1+n);
		for(int i=1;i<=n;i++){
			a[i]+=a[i-1];
			b[i]+=b[i-1];
		}
		double ans=0.0;
		for(int i=1;i<=n;i++){
			int l=0;
			int r=n;
			while(l<=r){
				int md=(l+r)/2;
				double x=a[i]-i-md;
				double y=b[md]-i-md;
				if(x>y)l=md+1;
				else r=md-1;
			}
			if(l<=n)ans=max(ans,min(a[i]-i-l,b[l]-i-l));
			if(r>=0)ans=max(ans,min(a[i]-i-r,b[r]-i-r));
		}
		cout<<fixed<<setprecision(4)<<ans;
	}
}
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... |