Cod sursa(job #400532)

Utilizator mihaionlyMihai Jiplea mihaionly Data 21 februarie 2010 16:01:19
Problema Deque Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.58 kb
#include <fstream>
using namespace std;
#define nmax 5000010
#define ll long long
ifstream f("deque.in");
ofstream g("deque.out");
ll deque[nmax],a[nmax];
ll c1,c2,k,n,i,sum;
#define deque (deque-1)
#define a (a-1)
int main()
 {
 c1=1;
 f>>n>>k;
 for(i=1;i<=n;++i) f>>a[i];
 for(i=1;i<=n;++i)
  {
  //1. elimin toate minimele mai mari sau egale cu x
  while(c1<=c2 && a[i]<=a[deque[c2]])
   --c2;
  //2. il plasez pe x in locul lui c2
  deque[++c2]=i;
  if(deque[c1]==i-k)
   ++c1;
  if(i>=k)
   sum+=a[deque[c1]];
  }
 ofstream g("deque.out");
 g<<sum;
 return 0;
 }