Cod sursa(job #854443)

Utilizator bogdan93Grigorescu Bogdan bogdan93 Data 13 ianuarie 2013 16:49:12
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#include <cstdio>
#include <cstdlib>

int v [ 5000001 ] , deque [ 5000000 ] ;
int n , K ;
int min , max , val ;
long long s = 0;


void afisare ( int *deque , int min , int max )
{
     printf ( "\n" ) ;
     for ( int i = min; i <= max; i++ )
         printf( "%2d ", deque [ i ] ) ;
     printf ( "\n" ) ;
}


int main ()
{
    FILE *f , *g ;
    f = fopen ( "deque.in" , "r" ) ;
    g = fopen ( "deque.out" , "w" ) ;

    fscanf ( f , "%d %d" , &n , &K ) ;
    for ( int i = 1 ; i <= n ; i++ )
        fscanf ( f , "%d" , &v[i] ) ;
    min = 1;
    max = 0;

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

        val = v[i] ;
        while ( val <= v [ deque [ max ] ] && min <= max ) max-- ;

        deque[ ++max ] = i ;

        if ( deque[ min ] == i-K ) min++;


        if ( i >= K ) s += v[ deque [ min ] ] ;

    }

    fprintf ( g , "%lld" , s ) ;

    return 0;
}