Cod sursa(job #1986561)

Utilizator giotoPopescu Ioan gioto Data 28 mai 2017 16:24:13
Problema Secventa Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <cstdio>
using namespace std;

int n, k, dq[500002], a[500002];
int main()
{
    freopen("secventa.in", "r", stdin);
    freopen("secventa.out", "w", stdout);
    scanf("%d%d", &n, &k);
    int Front = 1, Back = 0, st, dr, Sol = 0;
    for(int i = 1; i <= n ; ++i){
        scanf("%d", &a[i]);
        while(Front <= Back && a[i] <= a[dq[Back]])
            --Back;
        dq[++Back] = i;
        while(Front < Back && i - dq[Front + 1] + 1 >= k) ++Front;
        if(i - dq[Front] + 1 >= k){
            if(a[dq[Front]] > Sol){
                Sol = a[dq[Front]];
                st = dq[Front]; dr = i;
            }
        }
    }
    printf("%d %d %d", st, dr, Sol);
    return 0;
}