Submission #865344

#TimeUsernameProblemLanguageResultExecution timeMemory
865344vjudge1Sure Bet (CEOI17_sure)C++17
0 / 100
1 ms2396 KiB
#include <bits/stdc++.h> #define file(s) if (fopen(s".in", "r")) freopen(s".in", "r", stdin), freopen(s".out", "w", stdout) #define optimus_prime ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0) #define fxd(x) fixed << setprecision(x) #define all(a) (a.begin() , a.end()) #define popcount(x) __builtin_popcount(x) #define lwb lower_bound #define upb upper_bound #define dl long double #define ll long long #define pb push_back #define sz() size() #define F first #define S second using namespace std; const ll N = 2e5+9; ll n; dl a[N] , b[N]; dl calc(ll cnt){ ll ind1=1 , ind2=1 , i=cnt; dl sum1=0 , sum2=0; while (sum1<i&&cnt){ sum1+=a[ind1++]; cnt--; } while (sum2<i&&cnt){ sum2+=(b[ind2++]); cnt--; } while (cnt){ cnt--; if (ind1>n){ sum2+=b[ind2]; ind2++; continue; } if (ind2>n){ sum1+=a[ind1]; ind1++; continue; } if (sum1<sum2)sum1+=a[ind1++]; else if (sum1>sum2)sum2+=b[ind2++]; else { if (a[ind1]>b[ind2])sum1+=a[ind1++]; else sum2+=(b[ind2++]); } } sum1-=i; sum2-=i; return min(sum1 , sum2); } void solve(){ cin >> n; for (int i = 1 ; i <= n ; i++)cin >> a[i] >> b[i]; sort (a+1 , a+1+n); sort (b+1 , b+1+n); reverse (a+1 , a+1+n); reverse (b+1 , b+1+n); ll l=1 , r=2*n , res=0; while (l<=r){ ll md1=l+(r-l)/3; ll md2=r-(r-l)/3; dl sum1=calc(md1); dl sum2=calc(md2); if (sum1<sum2)l=md1+1 , res=md2; else r=md2-1 , res=md1; } dl ans=calc(res); cout << fxd(4) << ans; } signed main() { optimus_prime; solve(); return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...