Submission #468761

#TimeUsernameProblemLanguageResultExecution timeMemory
468761wdjpngSure Bet (CEOI17_sure)C++17
100 / 100
169 ms2244 KiB
    #include <bits/stdc++.h>
    //#define double double
    #define rep(i,n) for(int i = 0; i < n; i++)
    #define all(a) a.begin(), a.end()
     
    using namespace std;
     
    signed main()
    {
        int n;
        cin>>n;
     
        vector<double>a(n),b(n);
        rep(i,n) cin>>a[i]>>b[i];
     
        sort(all(a));
        sort(all(b));
        reverse(all(a));
        reverse(all(b));
     
        double maxx = 0;
        int off = 2;
        vector<double>sum(2);
        vector<int>point(2,1);
     
        sum[0] = a[0];
        sum[1] = b[0];
     
        while(min(point[0], point[1])<n)
        {
            maxx=max(maxx, min(sum[0], sum[1])-off);
            if((point[0]==n||sum[0]>sum[1])&&!(point[1]==n)) {
                sum[1]+=b[point[1]]; 
                point[1]++;
            }
            else {
                sum[0]+=a[point[0]]; 
                point[0]++;
            }
            off++;
        }
        maxx=max(maxx, min(sum[0], sum[1])-off);
        //cout<<(int)maxx<<".";
        //maxx-=(int)maxx;
        //rep(i,3) 
        //{
        //    maxx*=10;
        //    cout<<(int)maxx;
        //    maxx-=(int)maxx;
        //}
        //maxx*=10;
        //int o = (int)maxx;
        //if(1000*o+499<1000*maxx) o++;
        //cout<<o;
        printf("%.4lf",(double)maxx);
        //cout<<"\n";
    }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...