Submission #865490

#TimeUsernameProblemLanguageResultExecution timeMemory
865490vjudge1Sure Bet (CEOI17_sure)C++17
60 / 100
2033 ms5976 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] , ans; 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); for (int i = 1 ; i <= 2*n ; i++){ dl sum1=0 , sum2=0; ll ind1=1 , ind2=1 , cnt=i; 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; ans=max(ans , min(sum1 , sum2)); } 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...