Cod sursa(job #2730404)

Utilizator avtobusAvtobus avtobus Data 26 martie 2021 11:21:38
Problema Deque Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.75 kb
#include <stdio.h>
#include <bits/stdc++.h>

#define rep(i, n) for(int i = 0; i < (int)(n); i++)

using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
typedef vector<int> vi;
// const int INF = 0x3f3f3f3f;

ifstream fin {"deque.in"};
ofstream fout {"deque.out"};

int main(void) {
  // freopen("deque.in", "r", stdin);
  std::ios_base::sync_with_stdio(false);
  std::cin.tie(NULL);
  int N, K;
  fin >> N >> K;
  vector<int> a(N);
  ll sum = 0;
  deque<int> dq;
  rep(i, N) {
    fin >> a[i];
    while(!dq.empty() && a[dq.back()] >= a[i]) { dq.pop_back(); }
    dq.push_back(i);

    if (i >= K-1) {
      while(!dq.empty() && dq.front() < i - K + 1) { dq.pop_front(); }
      sum += a[dq.front()];
    }
  }
  fout << sum << '\n';

  return 0;
}