Cod sursa(job #2266223)

Utilizator AlexDontuAlex Dontu AlexDontu Data 22 octombrie 2018 15:01:11
Problema Deque Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.02 kb
#include <fstream>
#include <deque>
using namespace std;
ifstream fin ("vila2.in");
ofstream fout ("vila2.out");
deque <int> d1,d2;
long long n,k,v[5000001],i,s,x,maxi;
int main()
{
    fin>>n>>k;
    k++;
    for (i=1; i<=n; i++)
    {
        fin>>v[i];
    }
    d1.push_back(1);
    d2.push_back(1);
    for (i=2; i<=n; i++)
    {
        while (!d1.empty()&&v[d1.back()]>=v[i])
        {
            if (d1.size()>0)
            {
                d1.pop_back();
            }
            else break;
        }
        d1.push_back(i);
        if (d1.back()-d1.front()>=k) d1.pop_front();
        while (!d2.empty()&&v[d2.back()]<=v[i])
        {
            if (d2.size()>0)
            {
                d2.pop_back();
            }
            else break;
        }
        d2.push_back(i);
        if (d2.back()-d2.front()>=k) d2.pop_front();


        if (i>=k) {x=v[d2.front()]-v[d1.front()];
                   if (x>=maxi) maxi=x;}
    }
       fout<<maxi;

    return 0;
        }