Cod sursa(job #2583414)

Utilizator lucamLuca Mazilescu lucam Data 18 martie 2020 11:36:58
Problema Branza Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <fstream>
#include <deque>
using namespace std;

ifstream fin("vila2.in");
ofstream fout("vila2.out");

const int NM = 1e5;
unsigned short int v[NM];

int main()
{
    int n, k;
    fin >> n >> k;
    ++k;

    deque<int> mindeq, maxdeq;
    int difmax = -1;
    for (int i = 0; i < n; ++i) {
        fin >> v[i];

        while (!mindeq.empty() && v[mindeq.front()] >= v[i])
            mindeq.pop_front();
        mindeq.push_front(i);
        while (!mindeq.empty() && i - mindeq.back() >= k)
            mindeq.pop_back();

        while (!maxdeq.empty() && v[maxdeq.front()] <= v[i])
            maxdeq.pop_front();
        maxdeq.push_front(i);
        if (i - maxdeq.back() >= k)
            maxdeq.pop_back();

        if (i >= k - 1)
            difmax = max(difmax, v[maxdeq.back()] - v[mindeq.back()]);
    }

    fout << difmax;
    return 0;
}