Cod sursa(job #1687366)

Utilizator lflorin29Florin Laiu lflorin29 Data 12 aprilie 2016 20:12:07
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.62 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];
pair<int, int>D[MAXN];

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

void solve()
{
  int st = 1, dr = 0;
  long long ans(0);

  for(int i = 1 ; i <=N; ++i)
  {
    while(st<=dr && D[dr].second >= A[i])
        --dr;
    D[++dr] = make_pair(i, A[i]);
    if(D[st].first == i-K) st++;
    if(i >= K)
       ans += D[st].second;
  }
  fout << ans << '\n';
}

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