Submission #860324

#TimeUsernameProblemLanguageResultExecution timeMemory
860324naneosmicSure Bet (CEOI17_sure)C++14
100 / 100
79 ms4824 KiB
#include <bits/stdc++.h> #pragma GCC optimize("O3,unroll-loops") #pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt") #define float double #define endl "\n" using namespace std; bool f(float a, float b){ return a>b; } int binarySearch(vector<float>&arr, int l, int r, float x){ if(arr[l]>=x) return l; if(arr[l+1]>=x) return l; if(arr[r]<=x) return r-1; while (l < r) { if(l+1==r) return l; int m = (l+r) / 2; if(arr[m]<=x && arr[m+1]>=x) return m; if (arr[m+1] < x) l = m; else r = m; } return -1; } int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); float n; cin>>n; vector<float>a(n); vector<float>b(n); for(float i=0;i<n;i++){ cin>>a[i]>>b[i]; } sort(a.begin(),a.end(),f); sort(b.begin(),b.end(),f); vector<float>b_pref; float s=0; b_pref.push_back(0); for(float i=0;i<n;i++){ s+=b[i]; b_pref.push_back(s); } s=0; float score=0; for(float i=0;i<n;i++){ s+=a[i]; float j=binarySearch(b_pref,0,n,s); float s1=min(s,b_pref[j])-i-j-1; float s2=min(s,b_pref[j+1])-i-j-2; score=max(score,s2); score=max(score,s1); } printf("%.4lf",(float)score); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...