Cod sursa(job #1803749)

Utilizator DanyBvGeorge-Daniel Gagiu DanyBv Data 11 noiembrie 2016 19:22:31
Problema Secventa Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.1 kb
#include <iostream>
#include <cstdio>
#include <deque>
#include <cstring>

#define NMAX 500005

using namespace std;

int a[NMAX], n, k, maxi, stop, nr = 1;
char b[NMAX * 7];
deque<int> D;

int main()
{
    freopen("secventa.in", "r", stdin);
    freopen("secventa.out", "w", stdout);
    scanf("%d %d\n", &n, &k);
    gets(b);
    b[strlen(b)] = ' ';
    for(int k = 0; k <= strlen(b); )
    {
        int i, p = 1;
        for(i = k + (b[k] == '-'); b[i] != ' '; i++)
        {
            a[nr] = p * a[nr] + (b[i] - '0');
            p = p * 10;
        }
        if(b[k] == '-')
            a[nr] *= -1;
        nr++;
        k = i + 1;
    }
    for(int i = 1; i <= n; i++)
    {
        while(!D.empty() && a[i] <= a[D.back()])
            D.pop_back();
        if(!D.empty() && i >= D.front() + k)
            D.pop_front();
        D.push_back(i);
        if(i >= k)
            if(a[D.front()] > a[maxi])
            {
                maxi = D.front();
                stop = i;
            }
    }
    printf("%d %d %d", stop - k + 1, stop, a[maxi]);
    return 0;
}