Cod sursa(job #1335594)

Utilizator bogdanboboc97Bogdan Boboc bogdanboboc97 Data 5 februarie 2015 19:02:47
Problema Secventa Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <cstdio>
#define maxn 500010
int N, K;
int A[maxn], Deque[maxn];
int Front, Back;
int b,e,mx;
int main()
{
    freopen("secventa.in", "r", stdin);
    freopen("secventa.out", "w", stdout);
    int i;
    scanf("%d%d",&N,&K);
    for(i=1;i<=N;i++)scanf("%d",&A[i]);
    Front = 1, Back = 0;
    for (i = 1; i <= N; i++)
    {
        while (Front <= Back && A[i] <= A[ Deque[Back] ]) Back--;
        Deque[++Back] = i;
        if (Deque[Front] == i-K) Front++;
        if (i >= K)
        {
            if(A[ Deque[Front] ] > mx)
            {
                mx=A[ Deque[Front] ];
                b=i-K+1;
                e=i;
            }
        }
    }
    printf("%d %d %d",b,e,mx);
    return 0;
}