Cod sursa(job #2044323)

Utilizator MirunaStefaniaLupascu Miruna-Stefania MirunaStefania Data 21 octombrie 2017 09:25:25
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.69 kb
#include <iostream>
#define N 5000001
#include<fstream>
#include<deque>
using namespace std;
ifstream fin("deque.in");
ofstream fout("deque.out");
int n,k,a[N];
long long s;

deque<int>d;
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 secv de k elem
 for(i=1;i<=k;++i)add(i);
  s+=a[d.front()];
  for(i=k+1;i<=n;++i)
  {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;
}