Submission #46943

#TimeUsernameProblemLanguageResultExecution timeMemory
46943dqhungdlSure Bet (CEOI17_sure)C++17
100 / 100
130 ms16832 KiB
#include <bits/stdc++.h>
using namespace std;

const double EXP=1e-6;
int T,m=0,n=0;
double a[100005],b[100005];

bool Check(double lim)
{
    for(int i=1;i<=m;i++)
    {
        int lim2=min(int(max(a[i]-lim,0.0)),n);
        if(b[lim2]-double(i)>=lim)
            return true;
    }
    return false;
}

int main()
{
    ios_base::sync_with_stdio(false);
    //freopen("TEST.INP","r",stdin);
    cin>>T;
    double x,y;
    while(T--)
    {
        cin>>x>>y;
        if(x>=1.0)
            a[++m]=x-1.0;
        if(y>=1)
            b[++n]=y-1.0;
    }
    sort(a+1,a+m+1,greater<double>());
    sort(b+1,b+n+1,greater<double>());
    for(int i=1;i<=m;i++)
        a[i]+=a[i-1];
    for(int i=1;i<=n;i++)
        b[i]+=b[i-1];
    double res,l=0,r=1e9;
    while(r-l>=EXP)
    {
        double mid=(l+r)/2.0;
        if(Check(mid)==true)
        {
            res=mid;
            l=mid+EXP;
        }
        else
            r=mid-EXP;
    }
    cout<<setprecision(4)<<fixed<<res;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...