// #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 = 3e5+9, INF = 1e18 , inf = 1e9+9, mod = 1e9+9;
double a[N];
double b[N];
double suf_a[N];
double suf_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];
		}
		if(n<=10){
			vector<double>v;
			for(int i=1;i<=n;i++)v.pb(a[i]);
			for(int i=1;i<=n;i++)v.pb(b[i]);
			double ans=0;
			for(int mask=0;mask<(1<<(2ll*n));mask++){
				double suml=0.0;
				double sumr=0.0;
				int cnt=0;
				for(int i=0;i<v.size();i++){
					if((1<<i)&mask){
						if(i<=n-1)suml+=v[i];
						else sumr+=v[i];
						cnt++;
					}
				}
	//			cout<<suml<<" "<<sumr<<" "<<cnt<<'\n';
				ans=max(ans,min(suml-double(cnt),sumr-double(cnt)));
			}		
			cout<<fixed<<setprecision(4)<<ans;
		}else{
			sort(a+1,a+1+n);
			sort(b+1,b+1+n);
			for(int i=n;i>=1;i--)suf_a[i]=suf_a[i+1]+a[i];
			for(int i=n;i>=1;i--)suf_b[i]=suf_b[i+1]+b[i];
			double ans=0.0;
			for(int i=1;i<=n;i++){
				for(int j=1;j<=n;j++){
					int cnt=(n-i+1)+(n-j+1);
					double suml=suf_a[i];
					double sumr=suf_b[j];
					ans=max(ans,min(suml-double(cnt),sumr-double(cnt)));
				}
			}
			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... |