Pagini recente » Cod sursa (job #2569961) | Cod sursa (job #841783) | Cod sursa (job #2249774) | Cod sursa (job #1727004) | Cod sursa (job #419139)
Cod sursa(job #419139)
#include <cstdio>
int sir[5000100],deque[5000100];
int n,k,min;
long long rez;
int main()
{
freopen ("deque.in","r",stdin);
freopen ("deque.out","w",stdout);
scanf("%d%d",&n,&k);
for (int i=1;i<=n;++i)
scanf("%d",&sir[i]);
int st=1,dr=1,i=2;
deque[1]=1;
while (i<=k)
{
while (sir[i]<=sir[deque[dr]]&&dr)
--dr;
deque[++dr]=i;
++i;
}
rez=(long long)sir[deque[1]];
while (i<=n)
{
while (sir[i]<=sir[deque[dr]]&&dr>=st)
--dr;
deque[++dr]=i;
while (deque[st]<=i-k)
++st;
rez+=(long long)sir[deque[st]];
++i;
}
printf("%lld",rez);
return 0;
}