数据比较小,直接暴力枚举就ok啦。
#include <iostream>
using namespace std;
int d[30005];
int main()
{
int i, j, n, k, max, min, maxlen = 0;
cin >> n >> k;
for (i = 0; i < n; i ++) cin >> d[i];
for (i = 0; i < n; i ++) //直接穷举搜索
{
max = min = d[i];
for (j = i; j < n; j ++)
{
max = d[j] > max ? d[j] : max;
min = d[j] < min ? d[j] : min;
if ( max - min > k ) break;
if ( j - i + 1 > maxlen ) maxlen = j - i + 1;
}
}
cout << maxlen << endl;
return 0;
}