#P2012. Triangle Cuts

Triangle Cuts

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

问题描述

一位计算机科学教授观察到他的小女儿用剪刀剪开一张大的三角形纸片。纸片的一面是绿色,另一面是白色。她总是将纸片的白色面朝上,因此绿色面从未可见。她遵循以下一般步骤:

  1. 从一个大的白色三角形开始。
  2. 总是进行恰好三次直线切割,每次切割将一片纸分成两片。
  3. 最终得到四个较小的白色三角形。
  4. 然后她将这些小三角形放在一边,并重新开始一个新的大三角形。

前三个图展示了其中的一些可能性。所有角度均以度为单位。在图1和图2中,没有任何一条切割从大三角形的一个顶点直接延伸到对边。实际上,这两个图(包括它们的旋转)展示了在不进行这种切割的情况下,她可以产生四个三角形的唯一方式。图4的模式是不可能发生的,因为她的切割总是将当前的一片纸分成两片;在她剪掉最右边的三角形后,剩下的切割无法将剩余的三角形分成两片。

教授想象了一个满是孩子用不同方法制作三角形堆的场景,并想知道他是否能识别出他女儿的作品。给定四个小三角形的确切大小和形状,他能否判断它们是否可以由一个大三角形制作出来?经过片刻的思考,他意识到可以简化问题,只考虑三角形的形状,因为如果形状兼容,总会存在一些合适的小三角形尺寸。这导致了以下问题供你解决:给定一个大三角形和四个小三角形的角度,判断这些小三角形是否可能通过上述过程从大三角形中制作出来。

输入

输入包含113030个数据集,后跟一个只包含 "00180""0 0 180" 的行。每个数据集包含一行,由15个正整数组成,用单个空格分隔。每个整数小于180180。每三个整数表示一个三角形的顶点角度,以度为单位。假设所有三角形都没有翻转,因此绿色面朝上,顶点角度按顺时针方向列出。

输入的前四个数据集对应于上面的图。

输出

对于每个数据集,输出一行。如果孩子的剪纸游戏,如上所述,从一个具有前三个角度的三角形开始,并且可能以数据集中的最后四个三角形结束,则该行包含 "yes""yes"。否则,该行包含 "no""no"

示例输入

60 70 50 30 100 50 75 70 35 75 60 45 45 65 70
40 75 65 60 40 80 20 120 40 45 85 50 25 55 100
60 60 60 30 60 90 30 60 90 90 60 30 90 60 30
30 60 90 30 120 30 30 120 30 30 120 30 30 120 30
60 70 50 30 100 50 75 70 35 75 60 45 70 65 45
0 0 180

示例输出

yes
yes
yes
no
no

来源

Mid-Central USA 2004