Cod sursa(job #1758867)

Utilizator MiricaMateiMirica Matei MiricaMatei Data 17 septembrie 2016 23:55:05
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include <cstdio>
#include <deque>
using namespace std;
deque<pair <int, int> >d;
pair<int, int>aux;
int main(){
  freopen("deque.in", "r", stdin);
  freopen("deque.out", "w", stdout);
  int n, k, i;
  long long s = 0;
  scanf("%d%d", &n, &k);
  for (i = 1; i <= k; i ++){
    scanf("%d", &aux.first);
    while (!d.empty() && d.back().first >= aux.first)
      d.pop_back();
    aux.second = i;
    d.push_back(aux);
  }
  s = d.front().first;
  for (i = k + 1; i <= n; i ++){
    scanf("%d", &aux.first);
    while (!d.empty() && d.back().first >= aux.first)
      d.pop_back();
    aux.second = i;
    d.push_back(aux);
    if (d.front().second == i - k)
      d.pop_front();
    s += d.front().first;
  }
  printf("%lld\n", s);
  return 0;
}