- 1#include 2#include 3#include 4#include 5 using namespace std;
- 6 int n,
- k,
- h1,
- h2,
- t1,
- t2,
- temp = 1,
- ans;
- 7 int in [3000010],
- l1[3000010],
- l2[3000010];
- 8 int main() {
- 9 scanf("%d%d", &k, &n);
- 10
- for (int i = 1; i <= n; i++) scanf("%d", &in[i]);
- 11
- for (int i = 1; i <= n; i++) {
- 12
- while (h1in[i] <= in[l1[t1 - 1]]) t1--;
- 13
- while (h2in[i] >= in[l2[t2 - 1]]) t2--;
- 14 l1[t1] = l2[t2] = i;
- 15 t1++;
- t2++;
- 16
- while ( in [l2[h2]] - in[l1[h1]] > k) 17
- if (l2[h2] > l1[h1]) temp = l1[h1] + 1,
- h1++;
- 18
- else temp = l2[h2] + 1,
- h2++;
- 19 ans = max(ans, i - temp + 1);
- 20
- }
- 21 printf("%d", ans);
- 22
- return 0;
- 23
- }
来源: http://www.bubuko.com/infodetail-2085044.html