Cod sursa(job #2044285)

Utilizator mateiscarlScarlatachi Matei mateiscarl Data 21 octombrie 2017 09:12:57
Problema Deque Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <iostream>
#include <fstream>
#define N 5000001
#include <deque>

using namespace std;

ifstream fin("deque.in");
ofstream fout("deque.out");

deque <int> D;
int n,k;
int a[N];
long long S=0;

 void Citire()
  { int i;
    fin>>n>>k;
    for (i=1;i<=n;++i) fin>>a[i];
  }


 void ADD(int x)
  {
      while (!D.empty() && a[x]<=a[D.back()])
               D.pop_back();
      D.push_back(x);
  }


 void Calcul()
 { int i;
   /// prima secventa de k elemente
   for (i=1;i<=k;++i) ADD(i);
   S+=a[D.front()];
       {  while (!D.empty() && i-D.front()>=k)
                  D.pop_front();
          ADD(i);
          S+=a[D.front()];
       }


 }

int main()
{
   Citire();
   fin.close();
   Calcul();
   fout<<S<<"\n";
   fout.close();

   return 0;
}