Cod sursa(job #2879651)

Utilizator NanuGrancea Alexandru Nanu Data 28 martie 2022 20:21:27
Problema Deque Scor 60
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.78 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() && DQ.back() > v[i]) //elimin toate elementele mai mari decat x;
      DQ.pop_back();

    DQ.push_back(v[i]);
  }

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

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

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

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


  }

  fout << s;

  return 0;
}