Cod sursa(job #847764)

Utilizator bogdan93Grigorescu Bogdan bogdan93 Data 4 ianuarie 2013 14:34:17
Problema Secventa Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <cstdio>
#include <cstdlib>

#define nmax 500000

int N , k;
int deque[nmax] , v[nmax] , p , u , max = -30001;

int maxim ( int  &a , int &b )
{
    if ( a >= b ) return a;
        else return b;
}

int main ()
{
    FILE *fin , *fout ;

    fin = fopen ( "secventa.in" , "rt" );
    fout = fopen ( "secventa.out" , "wt" );

    fscanf ( fin , "%d %d" , &N , &k );

    p = 1 , u = 0 ;

    for ( int i = 1 ; i <= N  ; i++ )
    {
        fscanf ( fin , "%d" , v + i );

        while ( v[i] <= v[deque[u]] && p <= u ) u--;
        deque[++u] = i;

        if ( deque[u] - deque[p] == k ) p++;

        if ( i >= k ) {
        if ( max < v[deque[p]] ) max = v[deque[p]];
         }
    }
    printf ( "%d\n" , max );
    fprintf ( fout , "%d\n" , max );

    fclose ( fin );
    fclose ( fout );

    return 0;
}