Cod sursa(job #3237554)

Utilizator tsg38Tsg Tsg tsg38 Data 9 iulie 2024 22:46:52
Problema Deque Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.71 kb
#include <bits/stdc++.h>

using namespace std;
using ll = long long;

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

const int DIM = 5e6 + 1;

int v[DIM];

int main() {
  ios_base::sync_with_stdio(0);
  fin.tie(0);
  int n, k;
  ll s = 0;

  fin >> n >> k;
  deque<int> dq;
  for ( int i = 1; i <= n; ++i ) {
	fin >> v[i];
	if ( i <= k ) {
	  while ( dq.size() && v[dq.back()] >= v[i] ) {
		dq.pop_back();
	  }
	  dq.push_back(i);
	}
  }
  s += v[dq.front()];
  for ( int i = k + 1; i <= n; ++i ) {
	if ( i - k == dq.front() ) {
	  dq.pop_front();
	}
	while ( dq.size() && v[dq.back()] >= v[i] ) {
	  dq.pop_back();
	}
	dq.push_back(i);
	s += v[dq.front()];
  }
  fout << s;
  fin.close();
  fout.close();
  return 0;
}