Pagini recente » Cod sursa (job #1761990) | Cod sursa (job #967943) | Cod sursa (job #735041) | Cod sursa (job #2105153) | Cod sursa (job #840938)
Cod sursa(job #840938)
#include <cstdio>
#include <cassert>
const int dim=5000005;
int n=0,k=0,i=0,v[dim],deque[dim],start=1,stop=0,s=0;
int main()
{
assert(freopen("deque.in","r",stdin));
assert(freopen("deque.out","w",stdout));
assert(scanf("%d%d",&n,&k));
for (i=1; i<n+1; ++i)
assert(scanf("%d",&v[i]));
for (i=1; i<n+1; ++i)
{
while (start<stop+1 && v[i]<v[deque[stop]]+1)
--stop;
deque[++stop]=i;
if (deque[start]==i-k)
++start;
if (i+1>k)
s=s+v[deque[start]];
}
assert(printf("%I64d\n",s));
fclose(stdin);
fclose(stdout);
return 0;
}