Cod sursa(job #2047277)

Utilizator ioana_99Ioana Marin ioana_99 Data 24 octombrie 2017 18:24:36
Problema Deque Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.95 kb
#include <iostream>
#include <fstream>

using namespace std;
ifstream f("vila2.in");
ofstream g("vila2.out");
const int N=100010;
int  n,k,v[N],st_min,st_max,dr_min,dr_max,d_min[N],d_max[N];
int difmax=-1;
int main()
{
    f>>n>>k;
    st_min=0;
    st_max=0;
    dr_min=-1;
    dr_max=-1;
    k++;
    for(int i=0; i<n; i++)
    {
        f>>v[i];
        if(st_min<=dr_min && d_min[st_min]==i-k-1)
        {
            st_min++;
        }
        while(st_min<=dr_min && v[i]<=v[d_min[dr_min]])
        {
            dr_min--;
        }
        d_min[++dr_min]=i;
        if(st_max<=dr_max && d_max[st_max]==i-k-1)
        {
            st_max++;
        }
        while(st_max<=dr_max && v[i]>=v[d_max[dr_max]])
        {
            dr_max--;
        }
        d_max[++dr_max]=i;
        if(i>=k)
        {
            difmax=max(difmax,v[d_max[st_max]]-v[d_min[st_min]]);
        }

    }
    g<<difmax;
    return 0;
}