Cod sursa(job #531271)

Utilizator skullLepadat Mihai-Alexandru skull Data 9 februarie 2011 12:16:44
Problema Secventa Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <stdio.h>
using namespace std;
#define nmax 500005

int vec[nmax], dq[nmax];
int N, K;

int main ()
{
    freopen("secventa.in","r",stdin);
    scanf("%d%d", &N, &K);
    int i;
    for (i = 1; i <= N; ++i) scanf("%d", &vec[i]);
    int st = 1, dr = 1, maxim = -30005, a, b;
    dq[1] = vec[1];
    for (i = 2; i <= N; ++i)
    {
        while (st <= dr && dq[dr]>vec[i]) dr--;
        dq[++dr] = vec[i];
        if (i > K && dq[st] == vec[i-K]) st++;
        if (i >= K)
            if ( dq[st] > maxim )
            {
                maxim = dq[st];
                a = i-K+1;
                b = i;
            }
    }
    freopen("secventa.out","w",stdout);
    for (i = a; i <= b; ++i) printf("%d ", vec[i]);
    return 0;
}