# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
869204 | sleepntsheep | Bigger segments (IZhO19_segments) | C++17 | 0 ms | 0 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <stdio.h>
#define N 500001
#pragma GCC target("avx2")
#pragma GCC optimize("O3,unroll-loops")
i,j,n,dp[N];
long long a[N], fw[N],x,c,p;
u(p) { for (;p<N;p+=p&-p) fw[p]-=(fw[p]-x)*(x<fw[p]); }
//long long q(p) { long long z=1e18;for(;p;p-=p&-p)z-=(z-fw[p])*(z>fw[p]); return z;}
s(){
c=0,p=1e18;
for(int j=(1<<19);j;j>>=1)if(c+j<=n&&(fw[j+c]<p?fw[j+c]:p)>x)c+=j,p=(fw[c]<p?fw[c]:p);
return c+1;
}
main()
{
scanf("%d",&n);for(;++i<N;fw[i]=1e18);
for (i=1;i<=n;++i) scanf("%lld",a+i),x=a[i]+=a[i-1],dp[i]=1+dp[j=n+1-s(),j>0?j:(j=0)],x=2*a[i]-a[j],u(n-i+1);
printf("%d",dp[n]);
return 0;
}