下文中令 aa 为题目中的 cc 序列。

考虑一对限制 (x,y)(x, y) 的本质是什么。根据题意得知,maxi=1xai<ay\max_{i = 1}^x a_i < a_y,且 akmaxi=1xai(x<k<y)a_k \le \max_{i = 1}^x a_i(x < k < y),于是可以推出 maxi=1y1ai<ay\max_{i = 1}^{y - 1} a_i < a_y,也就是说。ak(x<k<y)a_k(x < k < y) 一定不是严格前缀最大值,而 aya_y 一定是严格前缀最大值。

于是我们可以 O(n)O(n) 求出数组 bbbi=1/0/1b_i = -1/0/1,表示 aia_i 一定不是 / 不一定是 / 一定是 前缀最大值,或者推出矛盾(即一个位置同时应该是 1,1-1, 1 的情况),判无解即可。

考虑构造。首先我们考虑 aa 全都不确定的情况,此时是简单的,bi=1b_i = 1 时令 ai=maxj=1i1aj+1a_i = \max_{j = 1}^{i - 1} a_j + 1,否则令 ai=1a_i = 1 即可。

如果当前的 aia_i 确定了,那我们考虑判断合不合法。

  1. 如果 bi=1b_i = 1aimaxj=1i1aja_i \le \max_{j = 1}^{i - 1} a_j 则一定无解,因为我们在最小化字典序的同时最小化了前缀 max\max
  2. 如果 bi=1b_i = -1ai>maxj=1i1a_i > \max_{j = 1}^{i - 1},则我们考虑往前找到一个最大的 pp 使得 apa_p 未确定且 bi1b_i \ne -1,令 ap=aia_p = a_i 来满足 aia_i 的限制。如果找不到这样的 pp 那么显然无解;调整后 apa_p 可能会与 [p+1,i1][p + 1, i - 1] 中的一些位置的限制冲突,此时也一定无解。因为冲突的位置 oo 一定满足 aoa_o 确定了,且 bo=1b_o = 1,而这样的位置相当于给前缀 max\max 设置了上界。

于是我们可以做到 O(n)O(n) 构造并且判定是否有解。代码在这里。