Cod sursa(job #814961)

Utilizator bogdan93Grigorescu Bogdan bogdan93 Data 16 noiembrie 2012 14:28:44
Problema Secventa Scor 60
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);


    char c = fgetc(f);
    int semn,x = 0,i = 0;
    while ( c != EOF ) {
		if ( c == '-' ) semn = -1;
            else if ( c >= '0' && c <= '9' ) x = x * 10 + c - '0';
                    else if ( c == ' ' || c == '\n' )
                        {
                            v[++i] = semn * x;
                            x = 0;
                            semn = 1;
                        }
		c = fgetc(f);
	}
    min = 1;
    max = 0;
    b = 0;
    for ( int i = 1; i <= n ; i++ )
        printf("%d ",v[i]);
    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;
}