Submission #90611

#TimeUsernameProblemLanguageResultExecution timeMemory
90611Harvey_RollensDivide and conquer (IZhO14_divide)C++17
0 / 100
54 ms4024 KiB
#include<bits/stdc++.h> #define ll long long #define ld long double #define st string #define fr first #define se second const ll mod=1e9+7; using namespace std; ll p[100100], s[100100], n, ans=0, a[100100]; bool divide(ll x) { ll l=1, r=1; while(a[r+1]-a[l]<=x && r+1<=n) r++; ll k=0; //cout<<x<<" "<<l<<" "<<r<<endl; while(l<=n) { while(a[r+1]-a[l]<=x && r+1<=n) r++; //cout<<x<<" "<<l<<" "<<r<<endl; ll ener=p[r]-p[l-1]; if(ener>=x) { k++; ll gold=s[r]-s[l-1]; ans=max(ans, gold); } l++; } if(k) return true; else return false; } int main() { //freopen("1.txt", "r", stdin); //freopen("1.txt", "w", stdout); ios_base::sync_with_stdio(0); cin.tie(NULL); cout.tie(NULL); cin>>n; for(ll i=1; i<=n; i++) { ll g, e; cin>>a[i]>>g>>e; p[i]=e+p[i-1]; s[i]=g+s[i-1]; } ll l=0, r=1e9+1; while(l+1<r) { //cout<<l<<" "<<r<<endl; ll d=(l+r)/2; if(divide(d)) l=d; else r=d; } //cout<<l<<" "<<r<<endl; cout<<ans; return 0; } /* 4 6 3 1 2 1 2 4 1 2 3 2 3 1 4 1 4 3 3 4 10 */
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...