Submission #657471

#TimeUsernameProblemLanguageResultExecution timeMemory
657471perchutsSure Bet (CEOI17_sure)C++17
100 / 100
86 ms3816 KiB
#include <bits/stdc++.h> #define all(x) x.begin(), x.end() #define sz(x) (int)x.size() #define endl '\n' #define _ ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0); #define pb push_back using namespace std; using ii = pair<int,int>; using iii = tuple<int,int,int>; using ll = long long; const int inf = 1e9+1; const int mod = 1e9+7; const int maxn = 1e5+100; template<typename X,typename Y> bool ckmin(X& x,Y y){return (x>y?x=y,1:0);} template<typename X,typename Y> bool ckmax(X& x,Y y){return (x<y?x=y,1:0);} int main(){_ int n;cin>>n; vector<double>a, b; for(int i=1;i<=n;++i){ double x,y;cin>>x>>y; a.pb(x), b.pb(y); } sort(all(a), greater<double>()); sort(all(b), greater<double>()); for(int i=1;i<n;++i)a[i] += a[i-1]; double cur = 0, ans = 0; for(int i=0;i<n;++i){//take i+1 bets on b cur += b[i]; int l = 0, r = n-1; while(l<r){//primeira vez que esq >= dir int md = (l+r)/2; if(a[md]>=cur)r = md; else l = md+1; } ckmax(ans, min(a[r], cur)-r-i-2); if(r)ckmax(ans, min(a[r-1], cur)-r-i-1); } cout<<fixed<<setprecision(4)<<ans<<endl; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...