Cod sursa(job #1598112)

Utilizator petrooPetru G petroo Data 12 februarie 2016 17:09:34
Problema Secventa Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <stdio.h>

#define MAX 500001

int Vector[MAX],Deque[MAX];


int main()
{

    int numar=-30001,head=1,tail=0;
    long N,K,i,poz_inceput=-30001,poz_terminat=-30001;

    freopen("secventa.in","r",stdin);
    freopen("secventa.out","w",stdout);

    scanf("%ld%ld",&N,&K);
    for ( i = 1 ; i <= N ; i++)
        scanf("%d",&Vector[i]);

    for ( i = 1 ; i <= N ; i++)
    {
        while(head <= tail && Vector[i] <= Vector[Deque[tail]])
            tail--;
        Deque[++tail] = i;
        if(i-K == Deque[head])
            head++;
        if(i >= K)
        {
            if((numar < Vector[Deque[head]]) || (numar <= Vector[Deque[head]] &&poz_inceput <= i-K))
            {
                numar = Vector[Deque[head]];
                poz_inceput= i-K+1;
                poz_terminat=i;
            }
        }

    }
    printf("%ld %ld %d",poz_inceput,poz_terminat,numar);

    return 0;

}