(int[] idx, int[] val, int l, int r)
| 50 | public static boolean[] ans = new boolean[MAXQ]; |
| 51 | |
| 52 | public static void sort(int[] idx, int[] val, int l, int r) { |
| 53 | if (l >= r) return; |
| 54 | int i = l, j = r, pivot = val[idx[(l + r) >> 1]], tmp; |
| 55 | while (i <= j) { |
| 56 | while (val[idx[i]] < pivot) i++; |
| 57 | while (val[idx[j]] > pivot) j--; |
| 58 | if (i <= j) { |
| 59 | tmp = idx[i]; idx[i] = idx[j]; idx[j] = tmp; |
| 60 | i++; j--; |
| 61 | } |
| 62 | } |
| 63 | sort(idx, val, l, j); |
| 64 | sort(idx, val, i, r); |
| 65 | } |
| 66 | |
| 67 | public static void build() { |
| 68 | for (int i = 1; i <= n; i++) { |