Cod sursa(job #471654)

Utilizator nicolaetitus12Nicolae Titus nicolaetitus12 Data 20 iulie 2010 11:38:10
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <cstdio>
#include <deque>
using namespace std;
struct nod
{int nr;
 int poz;
 nod(int a,int b)
 {nr=a;
  poz=b;
 }
};

int main ()
{deque<nod> q;
 freopen("deque.in","r",stdin);
 freopen("deque.out","w",stdout);
 int n,k,i,x;
 long long int s=0;
 scanf("%d %d",&n,&k);
 scanf("%d",&x);
 q.push_back(nod(x,1));
 
 for (i=2;i<=k;i++)
 {scanf("%d",&x);
  while(!q.empty()&&q.back().nr>=x)
  {q.pop_back();
  }
  q.push_back(nod(x,i));
 }


 s+=q.front().nr;
// printf("%d\n",q.front().nr);

 for (i=k+1;i<=n;i++)
 {if(q.front().poz<=i-k)
  {q.pop_front();}
  scanf("%d",&x);
  while(!q.empty()&&q.back().nr>x)
  {q.pop_back();
  }
  q.push_back(nod(x,i));

//  printf("%d\n",q.front().nr);
  s+=q.front().nr;
 }
 printf("%lld",s);
 
 return 0;
}