Cod sursa(job #1514129)

Utilizator vladdy47Bucur Vlad Andrei vladdy47 Data 30 octombrie 2015 17:28:51
Problema Deque Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
# include <bits/stdc++.h>

using namespace std;

const int Lmax = 100000 + 5;
int n, k, i, a[Lmax], res;

deque <int> M, m;


int main ()

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

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

    for (i = 1; i <= n; ++i)
        scanf("%d\n", &a[i]);

    for (i = 1; i <= n; ++i){
        while (M.size() && a[i] > a[M.back()]) M.pop_back();
        while (m.size() && a[i] < a[m.back()]) m.pop_back();

        m.push_back(i);
        M.push_back(i);

        while (M.front() == i - k -1) M.pop_front();
        while (m.front() == i - k -1) m.pop_front();

       if (i >= k) res = max(res, a[M.front()] - a[m.front()]);

    }

    printf("%d", res);

    return 0;
}