Pagini recente » Cod sursa (job #965441) | Cod sursa (job #316085) | Cod sursa (job #286271) | Cod sursa (job #1813617) | Cod sursa (job #2047277)
#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;
}