Cod sursa(job #1597831)

Utilizator RaduToporanRadu Toporan RaduToporan Data 12 februarie 2016 13:07:44
Problema Secventa Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.65 kb
#include <cstdio>

int n,i,k,x[500005],d[500005],p=1,u=0,primul,ultimul,maximul=-2000000000;

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