#P554. 「LibreOJ Round #8」MIN&MAX II

「LibreOJ Round #8」MIN&MAX II

题目描述

对于一个 nn 阶排列 pp,我们建立一张无向简单图 G(p)G(p),有 nn 个节点,标号从 11nn,每个点向左右两侧最近的比它大的点以及比它小的点连边。
形式化地,在 G(p)G(p) 中,u<v\forall u<v,边 (u,v)(u,v) 存在当且仅当以下四个条件至少一个成立:

  • pu<pvp_u<p_v,且不存在 u<i<vu<i<v 满足 pu<pip_u<p_i
  • pu>pvp_u>p_v,且不存在 u<i<vu<i<v 满足 pu>pip_u>p_i
  • pu<pvp_u<p_v,且不存在 u<i<vu<i<v 满足 pi<pvp_i<p_v
  • pu>pvp_u>p_v,且不存在 u<i<vu<i<v 满足 pi>pvp_i>p_v

对于区间 [l,r][l,r],规定其对应的排列 p[l:r]p[l:r] 表示与 pl,pl+1,,prp_l,p_{l+1},\cdots,p_r 大小顺序相同的 (rl+1)(r-l+1) 阶排列。
例如,对于排列 q={1,4,2,5,3}q=\{1,4,2,5,3\}q[2:4]q[2:4] 表示与 {4,2,5}\{4,2,5\} 大小顺序相同的 33 阶排列,即 {2,1,3}\{2,1,3\}

无向图 GG 的最小染色数即给图的每个点染一种颜色,满足每条边的两端颜色不同,最少需要的颜色种类数。记为 c(G)c(G)

现在给定一个 nn 阶排列 pp,请你求出 G(p)G(p) 的染色数,另外有 qq 次询问,每次询问一个区间 [l,r][l,r],请你求出其所有子区间对应的排列的图的染色数最大值 maxc\mathrm{maxc},以及达到最大值的子区间个数 cnt\mathrm{cnt}
(形式化地,对于一对 l,rl,r,求所有满足 llrrl\le l'\le r'\le rl,rl',r' 中,c(G(p[l:r]))c(G(p[l':r'])) 的最大值 maxc\mathrm{maxc},以及满足 c(G(p[l:r]))=ic(G(p[l':r']))=il,rl',r' 组数 cnt\mathrm{cnt}。)

输入格式

第一行一个正整数 nn

第二行 nn 个正整数 p1,p2,,pnp_1,p_2,\cdots ,p_n

第三行一个整数 qq

接下来 qq 行每行两个正整数 l,rl,r 表示一组询问。

输出格式

输出共 q+1q+1 行,第一行一个正整数表示 G(p)G(p) 的染色数,接下来每行两个整数 maxc,cnt\mathrm{maxc},\mathrm{cnt}

6
1 4 5 3 6 2
5
1 6
1 3
2 5
2 6
3 3
4
4 1
2 3
3 3
3 6
1 1
6
1 4 5 3 6 2
5
1 6
1 3
2 5
2 6
3 3
4
4 1
2 3
3 3
3 6
1 1

数据范围与提示

对于所有数据,1n3×105,0q3×1051\le n\le 3\times 10^5,0\le q\le 3\times 10^5

详细的数据限制及约定如下(留空表示和上述所有数据的约定相同):

Subtask # 分值(百分比) nn qq
11 1010 10\le 10
22 1515 100\le 100 104\le 10^4
33 2000\le 2000
44 - =0=0
55 5\le 5
66 3030 -