Submission #1322700

#TimeUsernameProblemLanguageResultExecution timeMemory
1322700PieArmySparklers (JOI17_sparklers)C++20
0 / 100
1 ms332 KiB
#include<bits/stdc++.h> typedef long long ll; #define pb push_back #define fr first #define sc second #define endl '\n' using namespace std; #define mid ((left+right)>>1) const ll inf=2e18; int n,k; ll t; ll arr[100023]; bool f(ll s){ int l=k,r=k,a=k,b=k; ll ca=-inf,cb=-inf,wa=0,wb=0; s*=2*t; ll cur=s; while(true){ while(wa<=0&&a>0){ ca=max(ca,(arr[a]-arr[a-1])-wa); wa+=s-(arr[a]-arr[a-1]); a--; } while(wb<=0&&b<n-1){ cb=max(cb,(arr[b+1]-arr[b])-wb); wb+=s-(arr[b+1]-arr[b]); b++; } if(wa>0&&ca<=cur){ cur+=wa; wa=0; ca=-inf; l=a; } else if(wb>0&&cb<=cur){ cur+=wb; wb=0; cb=-inf; r=b; } else break; } if(wa<wb){ swap(wa,wb); swap(ca,cb); } if(ca<=cur){ cur+=wa; } else return false; if(cb<=cur){ cur+=wb; } else return false; return true; } signed main(){ ios_base::sync_with_stdio(23^23);cin.tie(0); cin>>n>>k>>t; k--; for(int i=0;i<n;i++){ cin>>arr[i]; } int l=1,r=1e9; while(l<r){ ll s=(l+r)/2; if(f(s))r=s; else l=s+1; } cout<<l<<endl; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...