Cod sursa(job #1327473)

Utilizator bciobanuBogdan Ciobanu bciobanu Data 26 ianuarie 2015 19:19:28
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include <cstdio>
#include <deque>

using namespace std;

#define IN "deque.in"
#define OUT "deque.out"
#define MAX_N 5000005

FILE *f;
deque < int > D;
int v[ MAX_N ];
int main(  ) {
    long long sum = 0LL;
    int N, k;

    f = fopen( IN, "r" );
    fscanf( f, "%d%d", &N, &k );
    for( register int i = 1; i <= N; ++i ) {
        fscanf( f, "%d", v + i );
        while( !D.empty( ) && v[ D.back( ) ] >= v[ i ] )
            D.pop_back( );
        D.push_back( i );
        if( D.front( ) == i - k )
            D.pop_front( );
        if( i >= k )
            sum += v[ D.front( ) ];
    }
    fclose( f );
    f = fopen( OUT, "w" );
    fprintf( f, "%lld\n", sum );
    fclose( f );
    return 0;
}