// 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int t = in.nextInt(); for (int i = 0; i < t; i++) { int n = in.nextInt(); int q = in.nextInt(); int[] arr = new int[n]; for (int j = 0; j < n; j++) { arr[j] = in.nextInt();
}
//left[j] 表示 j 左边第一个 ≥ a[j] 的元素的索引
int[] left = new int[n]; Arrays.fill(left, -1); Deque<Integer> stack = new ArrayDeque<>(); for (int j = 0; j < n; j++) { while (!stack.isEmpty() && arr[stack.peek()] < arr[j]) { stack.pop(); } if (!stack.isEmpty()) { left[j] = stack.peek(); } stack.push(j); }
stack.clear();
//right[j] 表示 j 右边第一个 ≤ a[j] 的元素的索引
int[] right = new int[n]; Arrays.fill(right, -1); for (int j = n - 1; j >= 0; j--) { while (!stack.isEmpty() && arr[stack.peek()] > arr[j]) { stack.pop(); } if (!stack.isEmpty()) { right[j] = stack.peek(); } stack.push(j);