Cod sursa(job #526175)
#include<iostream.h>
#include<fstream.h>
#define N 5000001
typedef struct
{long nel,prim,ultim,elem[N];}deque;
deque q;
long t,n,k,i;
long long s=0;
void addEnd(deque &q,long x)
{q.nel++;
q.elem[q.ultim++]=x;}
long delBeg(deque &q)
{q.nel--;
return q.elem[q.prim++];}
long delEnd(deque &q)
{q.nel--;
q.ultim--;
return q.elem[q.ultim];}
int main()
{q.prim=q.ultim=q.nel=0;
ifstream f1("deque.in");
ofstream f2("deque.out");
f1>>n>>k;
for(i=1;i<=n;i++)
{f1>>t;
while(q.nel!=0&&q.elem[q.ultim-1]>t)
delEnd(q);
addEnd(q,t);
if(q.nel==k)
s+=delBeg(q);}
if(q.nel!=0)
s=s+delBeg(q);
f2<<s;
f1.close();
f2.close();
return 0;}