bzoj#P2365. 塔顶瞭望

塔顶瞭望

题目描述

Curimit 建造了座高塔,他们竖直建造,塔底全部位于一条直线上,从左到右分别编号为 1n1\sim n,相邻的两座塔之间相距 11 个长度单位。每座塔的高度不尽相同,分别记为 H1,H2,,HnH_1,H_2,\dots,H_n。每座塔的顶端都安装有一个闪光灯。

某天夜晚,Antonio 来到了 Curimit 的庄园。Curimit 很高兴,同时邀请 Antonio 登上他的一座高塔观光。同时他告诉 Antonio,如果他登上了编号为 kk 的塔,他将会为 Antonio 打开编号介于Sk,Ek之间的塔顶上的闪光灯。由于塔的瞭望方向都是相同的,因此必然有 1SkEk<k1\le S_k\le E_k<k

现在,Antonio 定义了几种他观察闪光灯的方法:

  1. 仰视:如果观察的闪光灯的高度高于观察者,则定义这一观察为「仰视」。仰角定义为观察者与闪光灯的连线与水平线的夹角。
  2. 俯视:如果观察的闪光灯的高度低于观察者,则定义这一观察为「俯视」。俯角定义为观察者与闪光灯的连线与水平线的夹角。
  3. Curimit 建造的塔的高度两两不同,因此不可能出现平视。

由于塔的高度很高,因此 Antonio 的身高以及塔的直径都可以忽略不计。 现在,Antonio 想知道他登上某一座塔后,所能观察到闪光灯的最大仰角与最小俯角。

由于 Curimit 建造的塔很多,导致这种计算非常的繁重与无聊。因此,Antonio 希望你帮他写一个程序来算出这些他感兴趣的数据。

输入格式

输入文件第一行一个整数 nn,表示塔的个数。

接下来一行个用空格隔开的正整数,分别表示 H1,H2,,HnH_1,H_2,\dots,H_n,两两不同。

接下来 nn 行,每行两个用空格隔开的整数 Sk,EkS_k,E_k 表示 Curimit 为 Antonio 点亮的灯的序号区间。满足 S1=E1=0,1SkEk<kS_1=E_1=0,1\le S_k\le E_k<k

输出格式

输出文件共两行。

第一行 nn 个用空格隔开的分数,第 ii 个表示 Antonio 站在第 ii 座塔上时看到的闪光灯的最大仰角的正切值。分数使用 a/b 的形式表示,且必须是既约的。整数写成 a/1。如果 Antonio站在某一座塔上不可能进行仰视,输出 0/0

第二行表示 nn 个最小俯角的正切值,输出格式同第一行。

每一行的末尾不要出现多余的空格。

样例输入

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

样例输出

0/0 0/0 1/1 0/0 3/1 0/0 
0/0 3/1 1/1 1/2 1/4 1/1

数据规模与约定