Cod sursa(job #543304)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 27 februarie 2011 20:46:34
Problema Deque Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.69 kb
#include<iostream.h>
#include<fstream.h>
#define N 5000001
long a,n,k,i,j,b[N]={0},q[N],p,u;
long long s=0;
int main()
{p=u=0;
ifstream f1("deque.in");
ofstream f2("deque.out");
f1>>n>>k;
b[0]=0;
for(i=1;i<=n;i++)
      {f1>>a;
      while(u!=p&&a<q[u-1])
             u--;
      q[u++]=a;
      if(u-p==1)
             b[p]=1;
      else
             {for(j=p;j<u-1;j++)
                     b[j]++;
             b[u-1]=1;}
      b[u]=0;
      if(((u-p==1&&p==i-k)||(p<i-k&&u-p<k)||(i==k&&b[p]>1))&&b[p]<k)
             s+=q[p];
      else
             if(u-p==k||b[p]==k||p==i-k||(i==k&&b[p]==1))
                   s+=q[p++];}
f2<<s;
f1.close();
f2.close();
return 0;}