第叁关卡题
2025-11-12 14:52:50
发布于:北京
#include <bits/stdc++.h>
using namespace std;
int n, k;
int s[1000005];
int main() {
cin >> n >> k;
for (int i = 1; i <= n; i++) {
cin >> s[i];
}
//稳定段的数量,最长稳定段的长度
int cnt = 0, maxx = 0;
//当前稳定段的左右端点
//第一个稳定段左端点肯定是 1
int l = 1, r;
for (r = 2; r <= n; r++) {
//如果不符合要求,说明 r-1 是这个稳定段右端点
if (abs(s[r] - s[r - 1]) > k) {
//稳定段数量加一
cnt++;
//当前稳定段是 [l,r-1] ,稳定段长度是 r-l
maxx = max(maxx, r - l);
//下一个稳定段左端点是 l
l = r;
}
}
//最后一个稳定段不能漏掉了
cnt++;
maxx = max(maxx, r - l);
//输出
cout << cnt << " " << maxx;
return 0;
}
这里空空如也











有帮助,赞一个