#include <bits/stdc++.h>
using namespace std;
#define int long long
const int MUL=1e12;
signed main(){
int n; cin>>n;
vector<int> a(n),b(n);
for (int i=0; i<n; i++) {
double x,y; cin>>x>>y;
a[i]=x*MUL, b[i]=y*MUL;
}
sort(a.begin(),a.end(),greater<int>()), sort(b.begin(),b.end(),greater<int>());
vector<int> pa(n), pb(n);
pa[0]=a[0], pb[0]=b[0];
for (int i=1; i<n; i++) pa[i]=pa[i-1]+a[i], pb[i]=pb[i-1]+b[i];
int ans=0;
for (int i=0; i<n; i++){
//cout<<pa[i]<<' ';
int sA = pa[i];
//binary search in min size subset in B that is >= sA
int ind=lower_bound(pb.begin(),pb.end(),sA) - pb.begin();
if (ind<n) {
ans=max(ans, sA -MUL*( i+1 + ind+1));
//cout<<"A: "<<i<<' '<<(i+1+ind+1)<<'\n';
}
}
//cout<<'\n';
for (int i=0; i<n; i++){
int sB = pb[i];
//binary search in min size subset in B that is >= sA
int ind=lower_bound(pa.begin(),pa.end(),sB) - pa.begin();
if (ind<n) {
ans=max(ans, sB - MUL*( i+1 + ind+1));
//cout<<"B: "<<i<<' '<<(i+1+ind+1)<<'\n';
}
}
double x = ((double)ans/MUL);
printf("%.4lf",(double)x);
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |