Cod sursa(job #603674)

Utilizator vlad2901Vlad Berindei vlad2901 Data 18 iulie 2011 12:36:00
Problema Secventa Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.21 kb
#include <stdio.h>

struct list
{
    int info, poz;
    list *urm, *prec;
} *p, *u;

int n ,k;

int main()
{
    short x, max = -31000;
    int i, umax = 0;
    list *nod, *aux;

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

    scanf("%d %d", &n, &k);

    for(i=1;i<=n;++i)
    {
        scanf("%hd", &x);

        while(u && u->info > x)
        {
            if(u == p)
            {
                p = NULL;
            }

            aux = u->prec;
            delete u;
            u = aux;
        }

        nod = new list;
        nod->info = x;
        nod->poz = i;
        nod->prec = u;
        nod->urm = NULL;

        if(!p)
        {
            p = nod;
        }

        if(u)
        {
            u->urm = nod;
        }
        u = nod;



        if(nod->poz - p->poz >= k)
        {
            aux = p->urm;
            delete p;
            p = aux;
            p->prec = NULL;

            if(i>=k && max < p->info)
            {
                max = p->info;
                umax = u->poz - k + 1;
            }
        }

    }

    printf("%d %d %d", umax, umax + k -1, max);

    return 0;
}