Cod sursa(job #2513592)

Utilizator popashtefan10Popa Stefan popashtefan10 Data 23 decembrie 2019 14:40:28
Problema Deque Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.77 kb
#include <iostream>
#include <cstdio>
#include <deque>

using namespace std;

int n, k;
long long s;
deque<int> minime, nr;

int main() {
  freopen("deque.in", "r", stdin);
  freopen("deque.out", "w", stdout);
  int x;

  scanf("%d %d ", &n, &k);
  for(int i = 1; i < k; i++) {
    scanf("%d", &x);
    while(!minime.empty() && minime.back() > x)
      minime.pop_back();
    minime.push_back(x);
    nr.push_back(x);
  }

  for(int i = k; i <= n; i++) {
    scanf("%d", &x);
    while(!minime.empty() && minime.back() > x)
      minime.pop_back();
    minime.push_back(x);
    nr.push_back(x);
    s += minime.front();

    if(nr.front() == minime.front())
      minime.pop_front();
    nr.pop_front();
  }

  printf("%lld", s);

  return 0;
}