Pagini recente » Cod sursa (job #1041228) | Cod sursa (job #195553) | Cod sursa (job #2597935) | Cod sursa (job #2977848) | Cod sursa (job #2286141)
# include <cstdio>
# include<algorithm>
const int NMAX = 1000000;
int n, k;
int v[NMAX + 1], dequemax[NMAX + 1] ,dequemin[NMAX + 1], leftmax, rightmax = -1, leftmin, rightmin = -1;
int ans;
int main()
{
freopen("secvdist.in", "r" , stdin);
freopen("secvdist.out", "w" , stdout);
scanf("%d%d" , &n , &k);
int j = 0;
for (int i = 0; i < n; ++i)
{
scanf("%d" ,&v[i]);
while (leftmin <= rightmin && v[i] <= v[dequemin[rightmin]])
rightmin--;
dequemin[++rightmin] = i;
while (leftmax <= rightmax && v[i] >= v[dequemax[rightmax]])
rightmax--;
dequemax[++rightmax] = i;
while (j <= i && v[dequemax[leftmax]] - v[dequemin[leftmin]] > k)
{
if (j == dequemin[leftmin])
leftmin++;
if (j == dequemax[leftmax])
leftmax++;
j++;
}
ans = std :: max(ans, i - j + 1);
}
printf("%d" , ans);
return 0;
}