Cod sursa(job #2044405)

Utilizator AlexTudor22Alex Brinza AlexTudor22 Data 21 octombrie 2017 09:51:27
Problema Secventa Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <iostream>
#include <fstream>
#include <deque>
#define nmax 100005
using namespace std;

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

deque <int> D,M;
int v[nmax];
int n,k,i,maxi=0,x;

void Citire()
    {
     fin>>n>>k;
     for(i=1;i<=n;++i) fin>>v[i];
     ++k;
    }

void Rezolvare()
    {
     for(i=1;i<=n;++i)
        {
         while(!D.empty() && v[D.back()]>=v[i])
            D.pop_back();
         D.push_back(i);
         if(i-k==D.front()) D.pop_front();

         while(!M.empty() && v[M.back()]<=v[i])
            M.pop_back();
         M.push_back(i);
         if(i-k==M.front()) M.pop_front();
         if(i>=k)
            {
             x=v[M.front()]-v[D.front()];
             if(x>maxi) maxi=x;
            }
        }
    }


int main()
{
    Citire();
    Rezolvare();
    fout<<maxi;
    return 0;
}