求一个最长的连续区间满足其中的最小数和最大数之差不大于k,直接做就可以了。
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int n,k,m,l,i,j;
int a[30100];
int low,high;
while ( cin >> n ) {
cin >> k;
for ( i=0;i<n;i++ ) {
cin >> a[i];
}
m=1;
for ( i=0;i<n-1;i++ ) {
l=1;
low=a[i];
high=a[i];
for ( j=i+1;j<n;j++ ) {
if ( fabs(a[j]-low)<=k&&fabs(a[j]-high)<=k ) {
l++;
if ( a[j]<low ) {
low=a[j];
}
if ( a[j]>high ) {
high=a[j];
}
}
else {
break;
}
}
if ( l>m ) {
m=l;
}
}
cout << m << endl;
}
return 0;
}