Cod sursa(job #479092)

Utilizator andreea1coolBobu Andreea andreea1cool Data 22 august 2010 16:47:50
Problema Secventa Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include<stdio.h>
#include<string.h>
int n,k,i,j,v[500010],in=1,sf,min=-30100,sol[500010],st,dr,x,p=1,inm=1;
char c[4200000];
int main()
{
    freopen("secventa.in","r",stdin);
    freopen("secventa.out","w",stdout);
    scanf("%d%d\n",&n,&k);
    gets(c);c[strlen(c)+1]=' ';
    for(i=0;p!=n+1;i++)
    {
        if(c[i]==' ')
        {
            v[p]=x*inm;
            p++;
            x=0;
            inm=1;
        }
        if(c[i]<='9'&&'0'<=c[i])
        {
            if(c[i-1]=='-') inm=-1;
            x=x*10+(c[i]-'0');
        }
    }
    for(i=1;i<=n;i++)
    {
        while(in<=sf&&v[sol[sf]]>v[i])
            sf--;
        sol[++sf]=i;
        if(sol[in]==i-k)
            in++;
        if(i>=k)
            if(v[sol[in]]>min)
                min=v[sol[in]],st=i-k+1,dr=i;
    }
    printf("%d %d %d",st,dr,min);

    return 0;
}