Cod sursa(job #814927)

Utilizator bogdan93Grigorescu Bogdan bogdan93 Data 16 noiembrie 2012 13:39:35
Problema Secventa Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.24 kb
#include <cstdio>
#include <cstdlib>
#include <cstring>


int v[500001],deque[500001];
int min,max,baza = -30001,n,k;
int b;


int citire(FILE f)
{

}

int main ()
{


    FILE *f,*g;
    f = fopen("secventa.in","r");
    g = fopen("secventa.out","w");

    fscanf(f,"%d %d",&n,&k);

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

    char c = fgetc(f);
    int semn,x,i = 1;
    while (c != EOF)
    {
        if ( c == '-' ) semn = -1;
            else if ( c >= '0' && c <= '9' )    x = x*10 + c - '0';
                    else if ( c == '\n')
                        {
                            v[i++] = x*semn;
                            semn = 1;
                            x = 0;
                        }
        c = fgetc(f);
    }

    min = 1;
    max = 0;
    b = 0;

    for ( int i = 1; i <= n ; i++ )
    {
        while ( v[i] < v[deque[max]] && max >= min ) max--;

        deque[++max] = i;

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

        if ( i >= k && baza < v[deque[min]] )
        {
             baza = v[deque[min]];
             b = i;

        }

    }

    fprintf(g,"%d %d %d",b-k+1,b,baza);

    fclose(f);
    fclose(g);

    return 0;
}