本来也不打算写这道题的解题报告的,因为比较水
直接维护两个单调队列(最大值,最小值)随便弄弄就行了但是我开始疯狂不知道为什么的RE,然后实在没办法找root要了数据测了之后……王苍,根本就没有错啊……我就去向root反映,root测了一下以前AC的pascal程序……王苍……又都RE了,实在是感人肺腑……1 var q1,q2:array[0..10000010] of longint; 2 a:array[0..10000010] of longint; 3 t,i,l1,l2,r1,r2,n,ans:longint; 4 k:longint; 5 6 function max(a,b:longint):longint; 7 begin 8 if a>b then exit(a) else exit(b); 9 end;10 11 begin12 readln(k,n);13 for i:=1 to n do14 read(a[i]);15 t:=1;16 l1:=1;17 l2:=1;18 for i:=1 to n do19 begin20 while (l1<=r1) and (a[i]>=a[q1[r1]]) do dec(r1);21 while (l2<=r2) and (a[i]<=a[q2[r2]]) do dec(r2);22 inc(r1);23 q1[r1]:=i;24 inc(r2);25 q2[r2]:=i;26 while (l1<=r1) and (l2<=r2) and (a[q1[l1]]-a[q2[l2]]>k) do27 if q1[l1]