Cod sursa(job #585059)

Utilizator Magnuscont cu nume gresit sau fals Magnus Data 27 aprilie 2011 21:48:32
Problema Secventa Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.65 kb
#include <stdio.h>

int q[500001],p[500001];

int main()
{
    int l=1,r=0,i=0,ind=0,n=0,k=0,x=0,max=0;
    freopen("secventa.in","r",stdin);
    freopen("secventa.out","w",stdout);
    scanf("%d%d",&n,&k);
    for (i=1;i<=k;++i)
    {
        scanf("%d",&x);
        while ((x<q[r])&&(r>0)) --r;
        ++r;
        q[r]=x;
        p[r]=i;
    }
    max=q[1];ind=k;
    for (i=k+1;i<=n;++i)
    {
        scanf("%d",&x);
        while ((x<q[r])&&(r>=l)) --r;
        ++r;
        q[r]=x;
        p[r]=i;
        if (p[l]<=i-k) ++l;
        if (q[l]>max) {max=q[l];ind=i;}
    }
    printf("%d %d %d",ind-k+1,ind,max);
    return 0;
}