Cod sursa(job #2286141)

Utilizator vladcainamisirVlad Cainamisir vladcainamisir Data 19 noiembrie 2018 21:01:41
Problema Secventa 3 Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1 kb
# 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;
}