#P16825. [NWRRC 2022资格赛]分段线性函数

[NWRRC 2022资格赛]分段线性函数

题目描述

Vadim 非常喜欢分段线性函数。下面给出分段线性函数的定义。

如果一个函数的图像可以表示为一条含有 nn 个顶点的折线,那么称这个函数为分段线性函数。具体来说,它由 nn 个点

(x1,y1),(x2,y2),,(xn,yn)(x_1,y_1),(x_2,y_2),\ldots,(x_n,y_n)

确定,并满足

x1<x2<x3<<xn.x_1<x_2<x_3<\cdots<x_n.

函数在 xix_i 处的值为 yiy_i,在相邻两个给定点之间为线性函数。该函数的定义域为区间 [x1,xn][x_1,x_n]

Valya 定义了一类一元函数,称为绝对值型函数。这种函数由若干项组成,每一项的形式为

aix+bi|a_i x+b_i|

aix+bi.-|a_i x+b_i|.

其中 xx 是自变量,ai,bia_i,b_i 是实数参数,|\cdot| 表示取绝对值。因此,一个含有 nn 项的绝对值型函数形如

±a1x+b1±a2x+b2±±anx+bn.\pm|a_1x+b_1|\pm|a_2x+b_2|\pm\cdots\pm|a_nx+b_n|.

现在给定一个含有 nn 个顶点的分段线性函数。请构造一个恰好含有 nn的绝对值型函数,使它在整个区间 [x1,xn][x_1,x_n] 上与给定函数恒等。

输入格式

第一行包含一个整数 nn,表示折线的顶点数。

2n105.2\le n\le 10^5.

接下来 nn 行,每行包含两个整数 xi,yix_i,y_i,表示第 ii 个顶点的坐标。

105xi,yi105.-10^5\le x_i,y_i\le 10^5.

保证横坐标严格递增:

x1<x2<x3<<xn.x_1<x_2<x_3<\cdots<x_n.

输出格式

在一行中输出一个恰好含有 nn 项的绝对值型函数,使其在区间 [x1,xn][x_1,x_n] 上与给定分段线性函数恒等。请遵循样例所示格式。

函数必须由 nn 个形如 |a_ix+b_i| 的项组成,各项之间使用字符 +- 分隔。允许在第一项前输出负号。

每一项必须满足以下格式要求:

  • 必须使用两个字符 | 将表达式括起来;
  • 内部必须包含 +,若 bi<0b_i<0,则使用负号;
  • 左侧操作数必须写成一个实数 aia_i 后紧跟字符 x,不输出乘号;
  • 即使 ai=1a_i=1bi=0b_i=0,也不能省略 aia_ibib_i
  • 即使 ai=0a_i=0,也不能省略左侧操作数。

必须恰好输出 nn 项。允许使用恒等于零的项,例如:

|0x+0|

输出文件大小不得超过 8 MB。

若对于区间 [x1,xn][x_1,x_n] 中的任意一点,你构造的函数值与给定分段线性函数值之差的绝对值不超过 0.010.01,则答案会被接受。

样例 1

2
1 0
2 1
-|0x-1|+|1x+0|

样例 2

2
0 1
1 2
|1x-0|+|0x+1|

样例 3

3
-1 1
0 -1
1 0
|-0.5x+1|-|0x-2|+|-1.5x-0|

样例说明

第三个样例对应的折线如下图所示: