Cod sursa(job #2879660)

Utilizator NanuGrancea Alexandru Nanu Data 28 martie 2022 20:31:27
Problema Deque Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.8 kb
#include <fstream>
#include <deque>
using namespace std;

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

#define DIM 5000000

long long s, n, k, v[DIM + 1];
deque <int> DQ;

int main() {
  fin.tie(0);
  fout.tie(0);

  fin >> n >> k;
  for(int i = 1; i <= k; i++) {
    fin >> v[i];
    while(!DQ.empty() && v[DQ.back()] >= v[i]) //elimin toate elementele mai mari decat x;
      DQ.pop_back();

    DQ.push_back(i);    //retin indicii;
  }

  s = v[DQ.front()]; //prima secventa de k elemente;
  DQ.pop_front();
  for(int i = k + 1; i <= n; i++) {
    fin >> v[i];

    while(!DQ.empty() && v[DQ.back()] >= v[i])
      DQ.pop_back();

    if(DQ.front() == i - k)
      DQ.pop_front();

    DQ.push_back(i);
    s += v[DQ.front()];
  }

  fout << s;

  return 0;
}