Submission #1027204

#TimeUsernameProblemLanguageResultExecution timeMemory
1027204vjudge1Sure Bet (CEOI17_sure)C++17
100 / 100
132 ms9812 KiB
#include<bits/stdc++.h>
#define ll long long int
#define ld long double
#define ii int
#define pb push_back
#define fi first
#define se second
#define Op operator
#define bp __builtin_popcount
#define Faster ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#define endl '\n'
#define TT ll tt;cin>>tt;while(tt--){Test_Case();}
#define T Test_Case() ;
using namespace std;
const ii N = 2e5 , M = 1e6 , mod = 1e9 + 7 , Ones = 1 , Zero = 0;
const ll oo = 1e18 ;
ld a[N + 5] , b[N + 5] , Prea[N + 5] , Preb[N + 5] , ans = 0 ; 
bool comp(ld aa , ld bb) {
    return aa > bb ; 
}
void Test_Case(){
    ii n ; cin >> n ; 
    for(ii i = 1 ; i <= n ; i ++ ) {
        cin >> a[i] >> b[i] ; a[i] -= 1.0 , b[i] -= 1.0 ; 
    }
    sort(a + 1 , a + n + 1 , comp) ; sort(b + 1 , b + n + 1 , comp) ; 
    for(ii i = 1 ; i <= n ; i ++) {
        Prea[i] = Prea[i - 1] + a[i] ; 
    }
    ld s = 0 ;  
    for(ii i = 1 ; i <= n ; i ++) {
        ii l = 1 , r = n , idx = n + 1 ; s += b[i] ; 
        while(l <= r) {
            ii m1 = l + (r - l) / 3 , m2 = r - (r - l) / 3 ; 
            if(min(s - m1 , Prea[m1] - i) < min(s - m2 , Prea[m2] - i)) {
                l = m1 + 1 ; 
            }
            else r = m2 - 1 , idx = m2 ; 
        }
        ans = max(ans , min(s - idx , Prea[idx] - i)) ; 
    }
    cout << setprecision(4) << fixed << ans << endl ; 
}
int main(){
    Faster
    T ;
}
                    //////    //    //  //    //  //////
                    //        //   //   //    //      //
                    //////    //////      ////      //
                        //    //  //      //      //
                    //////    //   //    //       ////////
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...