Cod sursa(job #2285622)

Utilizator ZappaManIosif Adrian-Mihai ZappaMan Data 18 noiembrie 2018 20:27:43
Problema Deque Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.71 kb
#include <stdio.h>
#include <deque>

using namespace std;

typedef int ll;
const int NMAX = 5000005;

ll N, K;

ll vec[NMAX];

int main() {
   freopen("deque.in", "r", stdin);
   freopen("deque.out", "w", stdout);

   scanf("%d %d", &N, &K);

   long long sum = 0;
   deque<ll> d;

   for (int i = 1; i <= N; ++i) {
      scanf("%d", &vec[i]);
   }

   for (int i = 1; i <= N; ++i) {

      while (d.size() > 0 && vec[i] < vec[d.back()]) {
         d.pop_back();
      }

      d.push_back(i);

      if (i >= K) {
         ll f = d.front();
         sum += vec[f];
      }
      if (i - d.front() + 1 >= K) {
         d.pop_front();
      }
   }
   printf("%lld", sum);

   fclose(stdin);
   fclose(stdout);
   return 0;
}