Pagini recente » Cod sursa (job #2684239) | Cod sursa (job #20001) | Arhiva de probleme | Cod sursa (job #143818) | Cod sursa (job #235719)
Cod sursa(job #235719)
#include <stdio.h>
#define Nmax 5000100
int n,k,dq[Nmax],p[Nmax],st,dr;
int main()
{
freopen("deque.in","r",stdin);
freopen("deque.out","w",stdout);
scanf("%d%d",&n,&k);
int tmp;
unsigned long long ret=0;
st=1;dr=0;
for (int i=1;i<=n;++i)
{
scanf("%d", &tmp);
while (st<=dr && dq[dr] >= tmp) --dr;
while (st<=dr && p[st]+k<=i) ++st;
++dr;
dq[dr] = tmp;
p[dr] = i;
if (i>=k) ret += dq[st];
}
printf("%lld\n", ret);
return 0;
}