Submission #246470

#TimeUsernameProblemLanguageResultExecution timeMemory
246470uacoder123Sure Bet (CEOI17_sure)C++14
100 / 100
118 ms3616 KiB
     #include <bits/stdc++.h>
    using namespace std;
    #define F first
    #define S second
    #define FOR(i,a,b) for (auto i = (a); i <= (b); ++i)
    #define NFOR(i,a,b) for(auto i = (a); i >= (b); --i)
    #define all(x) (x).begin(), (x).end()
    #define sz(x) int(x.size())
    #define mp(i,a) make_pair(i,a)
    #define pb(a) push_back(a)
    #define bit(x,b) (x&(1LL<<b))
     
    typedef long long int lli;
    typedef pair <lli,lli> ii;
    typedef pair <lli,ii> iii;
    typedef vector <lli> vi;
     
    int main()
    {
      ios_base::sync_with_stdio(false);
      cin.tie(NULL);
      int test=1;
      for(;test>0;--test)
      {
        lli n;
        double ans=0;
        cin>>n;
        int k=-1;
        vector<double> f(n),s(n);
        for(int i=0;i<n;++i)
          cin>>f[i]>>s[i];
        sort(all(f),greater<double>());
        sort(all(s),greater<double>());
        if(k==-1&&s[0]<1)
            k=0;
        for(int i=1;i<n;++i)
        {
          if(k==-1&&s[i]<1)
            k=i;
          f[i]=f[i]+f[i-1];
          s[i]=s[i]+s[i-1];
        }
        if(k==-1)
            k=n-1;
        for(int i=0;i<n;++i)
        {
          lli j=lower_bound(all(s),f[i])-s.begin();
          ans=max(ans,min(f[i]-i-1-min(n-1,j)-1,s[min(j,n-1)]-i-1-min(j,n-1)-1));
          j=min(j-1,k*1LL);
          ans=max(ans,min(f[i]-i-1-j-1,s[j]-i-1-j-1));
        }
        cout<<fixed<<setprecision(4)<<ans<<endl;
      }
      return(0);
    }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...