#P1774. Fold Paper Strips

Fold Paper Strips

本题没有可用的提交语言。

题目描述

有一张宽度为1的纸条,其各部分宽度均匀。纸条最左端有一条竖线,纸条质地柔软且可向右无限延伸,所有点均位于同一平面内。

纸条可沿某位置的一条直线折叠。折叠后纸条可能出现重叠部分,但所有点仍保持共面(假设纸条厚度为0)。纸条的水平位置定义如下:最左侧竖线的位置为0,坐标轴沿纸条向右延伸。折叠线的位置由(a, b)表示,其中“a”是该直线与纸条上边缘交点的水平位置,“b”是与下边缘交点的水平位置,即折叠线是经过这两点的直线。

折叠方向有两种可能:沿折叠线将左侧部分向前(右侧部分上方)折叠,或向后(右侧部分下方)折叠。一次折叠操作(a, b, d)包含折叠线(a, b)和方向d(d=0表示向前折叠,d=1表示向后折叠)。 给定一个折叠序列(a₁, b₁, d₁), (a₂, b₂, d₂), …, (aₙ, bₙ, dₙ),满足aᵢ ≤ aᵢ₊₁且bᵢ ≤ bᵢ₊₁(1 ≤ i < n)。需按顺序执行折叠操作。若在第i次折叠后,已折叠部分与下一次未折叠的折叠线i+1在纸条的同一侧发生重叠(即折叠i和折叠i+1的方向相同),则称折叠线i+1为“失败折叠”,如图(C)所示。

编写程序判断折叠序列中是否存在失败折叠。若存在,输出“NO”及第一个失败折叠的序号;否则输出“YES”。

输入格式

输入包含多个测试用例。每个测试用例的第一行是折叠次数n(0 < n ≤ 1000)。下一行包含3n个实数,表示折叠序列:a₁ b₁ d₁ a₂ b₂ d₂ … aₙ bₙ dₙ。输入以仅包含一个0的行结束。

输出格式

对每个测试用例,输出一行结果。若存在失败折叠,输出“NO”及第一个失败折叠的索引(序号从1开始);否则输出“YES”。

输入输出示例

输入数据1:

3
3 4 0 6 5.5 0 10 10 0
4
3 3 0 5 5 1 7 7 0 8 8 1
0

输出数据1:

NO 3
YES

来源

Asia Guangzhou 2003