Cod sursa(job #1394881)

Utilizator Burbon13Burbon13 Burbon13 Data 20 martie 2015 19:54:32
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include <iostream>
#include <deque>
#include <cstdio>

using namespace std;

const int nmax = 5000069 ;

int n , k , v[nmax] ;
long long rez ;

deque <int> d ;

void read()
{
    scanf( "%d %d" , &n , &k ) ;
    for ( int i = 1 ; i <= n ; i ++ )
        scanf( "%d" , &v[i] ) ;
}

void solve()
{
    for ( int i = 1 ; i <= n ; i ++ )
    {
        while ( not d.empty() && v[d.back()] > v[i] )
            d.pop_back() ;
        d.push_back(i) ;
        if ( not d.empty() && d.front() == i - k )
            d.pop_front() ;
        if ( i >= k && not d.empty() )
            rez += v[d.front()] ;
    }
}

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

    read() ;
    solve() ;

    printf( "%lld\n" , rez ) ;

    return 0;
}