Logo 邂逅编程之美

UOJ

时间限制:3 s 空间限制:1024 MB
Statistics

$1s1024MB(water.in/out)$

大样例

题目描述

对于长为 $m$ 的序列 $x$,认为它是好的当且仅当 $m\ge 2$,且 $\max(x_1,x_m)<\min(x_2,x_3,\cdots,x_{m-1})$。

考虑序列长为 $n$ 的 $a$,你可以进行任意次操作,每次可以选择一个区间 $[l,r]$ 满足 $a_l,a_{l+1},\cdots,a_r$ 这个序列是好的,然后删除 $a_{l+1}\cdots a_{r-1}$,接下来序列会变成 $a_1,a_2,\cdots,a_{l-1},a_l,a_r,a_{r+1},\cdots,a_n$。你希望最大化最终序列的所有元素的平均值。设 $f(a)$ 为上述问题的答案。

给定长为 $N$ 的序列 $A$,有 $Q$ 次询问,每次给出 $l,r$,你需要输出 $f(A[l\cdots r])$ 的值。具体来说,设答案化为最简分数后为 $\frac{x}{y}$,你需要输出一行两个正整数 $x,y$ 表示答案。

保证每次询问给出的 $l,r$ 满足:$A[l\cdots r]$ 是一个好的序列。

输入格式

第 $1$ 行一个整数 $N$ 。

第 $2$ 行 $n$ 个数表示序列 $A$ 。

第 $3$ 行一个整数 $Q$ 。

接下来 $Q$ 行,每行两个整数 $l_i,r_i$。

输出格式

输出共 $Q$ 行表示答案。

样例

样例 1 输入

10
2 4 3 9 9 9 9 9 9 1 2
1 3
1 10

样例 1 输出

3 1
20 3

样例 2

见选手目录下 $\rm water/ex\_water2.in$ 和 $\rm water/ex\_water2.out$ 。

该样例满足子任务 $3$ 的限制。

样例 3

见选手目录下 $\rm water/ex\_water3.in$ 和 $\rm water/ex\_water3.out$ 。

该样例满足子任务 $5$ 的限制。

样例 4

见选手目录下 $\rm water/ex\_water4.in$ 和 $\rm water/ex\_water4.out$ 。

该样例满足子任务 $6$ 的限制。

数据范围

$2\le N\le 3\times 10^5,1\le Q\le 6\times 10^5,1\le A_i\le 10^9,1\le l < r\le N$。

$\rm Subtask\ 1(5pts)$:$n\leq 15$。

$\rm Subtask\ 2(5pts)$:$n\leq 50$。

$\rm Subtask\ 3(10pts)$:$n\leq 250$ 。

$\rm Subtask\ 4(10pts)$:$A_i\leq 4$ 。

$\rm Subtask\ 5(15pts)$:$n\leq 5000$。

$\rm Subtask\ 6(20pts)$:保证 $A$ 序列是好的且 $Q=1$ ,$l_1=1,r_1=n$。

$\rm Subtask\ 7(10pts)$:$A_i\leq 20$。

$\rm Subtask\ 8(30pts)$:无特殊限制。