Pagini recente » Cod sursa (job #548375) | Cod sursa (job #631437) | Cod sursa (job #3252748) | Cod sursa (job #2872096) | Cod sursa (job #1608257)
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
int deq1[100005],deq2[100005],n,k,v[100005],maxn;
int main()
{
freopen("vila2.in","r",stdin);
freopen("vila2.out","w",stdout);
scanf("%d%d",&n,&k);
for (int i=1;i<=n;++i)
scanf("%d",&v[i]);
int Back1=1,Front1=1;
deq1[1]=1;
int Back2=1,Front2=1;
deq2[1]=1;
for (int i=2;i<=n;++i)
{
while (Front1<=Back1 && v[deq1[Back1]]>=v[i])
--Back1;
deq1[++Back1]=i;
if (deq1[Front1]==i-k-1)
++Front1;
while (Front2<=Back2 && v[deq2[Back2]]<=v[i])
--Back2;
deq2[++Back2]=i;
if (deq2[Front2]==i-k-1)
++Front2;
if (abs(v[deq2[Front2]]-v[deq1[Front1]])>maxn)
maxn=v[deq2[Front2]]-v[deq1[Front1]];
}
if (abs(v[deq2[Front2]]-v[deq1[Front1]])>maxn)
maxn=v[deq2[Front2]]-v[deq1[Front1]];
printf("%d ",maxn);
return 0;
}