Cod sursa(job #526175)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 27 ianuarie 2011 17:50:40
Problema Deque Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.69 kb
#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;}