Submission #309753

#TimeUsernameProblemLanguageResultExecution timeMemory
309753vipghn2003Sure Bet (CEOI17_sure)C++14
20 / 100
1 ms512 KiB
#include<bits/stdc++.h> using namespace std; const int N=1e5+5; int n; double a[N],b[N]; long long s[N]; bool check(long long lim) { long long cur=0; for(int i=1;i<=n;i++) { cur+=a[i]; long long mx=(cur-lim)/100000-i; if(mx<0) continue; mx=min(mx,1ll*n); if(s[mx]-1ll*i*100000>=lim) return true; } return false; } int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); cin>>n; for(int i=1;i<=n;i++) { cin>>a[i]>>b[i]; a[i]*=100000; b[i]*=100000; } sort(a+1,a+n+1); sort(b+1,b+n+1); reverse(a+1,a+n+1); reverse(b+1,b+n+1); for(int i=1;i<=n;i++) s[i]=max(s[i-1],s[i-1]+(int)b[i]-100000); long long l=1,r=1e18,res=0; while(l<=r) { long long mid=(l+r)/2; if(check(mid)) { res=mid; l=mid+1; } else r=mid-1; } cout<<fixed<<setprecision(4)<<1.0*res/100000; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...