UVA1058 Grand Prix
题目描述
你现在是一个丘陵地区公路赛的主设计师。赛道由 $N$ 段直道连接而成。第 $K$ 段的结尾与第 $K+1$ 段的开头相连。现在计划让这 $N$ 段赛道都在一个平面上,所以可以在二维的笛卡尔坐标系确定端点。第一段直道从原点开始。下图表示了一个有 $6$ 条直道的赛道。

真实的比赛是在一座山上进行。简单起见,我们认为山坡和水平面夹角为 $\theta$。如下图所示。
山坡的平面和水平面相交在 $y$ 轴。每一个二维坐标 $(x_i, y_i)$ 对应一个三维坐标 $(x_i', y_i', z_i')$。其中 $z_i'$ 表示第 $i$ 条直线终点的高度。

举办这次特别的公路赛的目的是为了让新手司机练习,所以我们规定:一个合乎要求的赛道不包含任何下山的直道。也就是说,如果第 $k$ 段直道的终点是 $z_k'$,那么对于所有第 $k$ 段以后的直道终点高度,一定不小于 $z_k'$。也可以记作当 $m\geq k,z_k'\leq z_m'$。
如果一个已设计好的赛道包含了下山的直道,它也许可以通过在平面上以原点为旋转中心旋转一定角度,被转化为一个没有下山直道的赛道,但并没有改变相邻两条直道直间的夹角。然而,也有可能存在设计好的赛道不论怎么旋转都无法成为合法赛道的情况。
在这道题中,你必须确定一个被设计了的赛道是否合法(也就是说,它不包含任意的下山直道)。如果不合法,你必须找出旋转赛道来使它合法的最小角度,或者发现它不可能有解。
输入格式
输入数据包括多组测试数据。
每个数据点描述了一个赛道和该山坡的坡度。每个测试点的第一行包含两个正整数 $N(1\leq N\leq 10^4)$ 和 $\theta(0\degree \leq \theta\leq 45\degree)$。$N$ 表示直道的个数,$\theta$ 表示山坡和水平面的夹角,接下来 $N$ 行每行包含一对整数 $(x_i,y_i)$,表示第 $i$ 条直道的重点。第一条直道的起点就是原点,第 $k+1$ 条直道的起点就是第 $k$ 条直道的终点。没有直道的长度为 $0$。
最后一个测试点后接一行,包含两个整数 $0$。
输出格式
对于每个测试点,先输出一行表示测试点编号(从 $1$ 开始)。
如果原方案不经旋转就可以符合要求,则输出 `Acceptable as proposed`。
如果原方案不符合要求,但是可以由原点旋转而变得合法,则输出 `Acceptable after clockwise rotation of X degrees` 或 `Acceptable after counterclockwise rotation of X degrees`。注意 $X>0$。(我们认为,一个顺时针方向的旋转将把 $y$ 轴正方向向着 $x$ 轴正方向旋转)。如果顺时针和逆时针旋转都存在合法的方案,那么挑选旋转角度小的作为答案。如果两种旋转角度相等,那么任何一种答案都将被接受。答案保留两位小数。
如果原方案如何旋转都无法变为合法解,就输出 `Unacceptable`。
每个数据输出后打印一个空行。