Cod sursa(job #2285613)

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

using namespace std;

typedef long long ll;
const int NMAX = 5000005;

ll N, K;

ll vec[NMAX];

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

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

   ll sum = 0;
   deque<ll> d;

   for (int i = 1; i <= N; ++i) {
      scanf("%lld", &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();
         printf("%lld ", vec[f]);
         sum += vec[f];
      }
      if (i - d.front()  + 1 >= K) {
         d.pop_front();
      }
   }
   printf("\n");
   printf("%lld\n", sum);

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