Cod sursa(job #2264386)

Utilizator Vlad_NituNitu Vlad-Petru Vlad_Nitu Data 20 octombrie 2018 08:59:06
Problema Deque Scor 60
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.72 kb
#include <bits/stdc++.h>
using namespace std ;


deque <int> d;
long long s = 0 ;
int n , k , a[5000001] ;
int main()
 {
     freopen("deque.in" , "r" , stdin) ;
     freopen("deque.out" , "w" , stdout) ;
     scanf("%d%d" , &n , &k) ;
     for (int i = 1 ; i <= n ; ++i)
        scanf("%d" , &a[i]);

     for (int i = 1 ; i <= n ; ++i)
     {
         while(!d.empty() && a[d.back()] >= a[i])
            d.pop_back();

        /* Se extrag de la sfarsitul cozii
        toate elementele '>=' cu a[i] */
            d.push_back(i);
            if (i - d.front() == k)
                d.pop_front() ;
            if (i >= k)     s += a[d.front()] ;

     }

     printf("%lld" , s);
     return 0 ;
 }