Cod sursa(job #1687362)

Utilizator lflorin29Florin Laiu lflorin29 Data 12 aprilie 2016 20:10:04
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.6 kb
#include <bits/stdc++.h>

using namespace std;

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

const int MAXN = 5 * 1e6 + 7;

int N , K , A[MAXN];

void citire()
{
  fin >> N >> K;
  for(int i = 1 ; i <= N ; ++i)
     fin >> A[i];
}

void solve()
{
  deque < int>D;
  long long ans(0);

  for(int i = 1 ; i <=N; ++i)
  {
    while(!D.empty() && A[D.back()] >= A[i])
        D.pop_back();
    D.emplace_back(i);
    if(D.front() == i-K) D.pop_front();
    if(i >= K)
       ans += A[D.front()];
  }
  fout << ans << '\n';
}

int main()
{
  citire();
  solve();
}