

Time Limit: 2 sec / Memory Limit: 256 MB
配点 : 1200 点
問題文
N 個の特殊なジグソーピースがあります.それぞれのピースは,幅が 1 で高さが 1 以上の長方形のパーツを 3 つつなげた形をしています. i 番目のピースは,次のような形をしています:
- 高さ H のパーツの左側に高さ A_i のパーツを,右側に高さ B_i のパーツをくっつけた形.ただし,左側のパーツの一番下の辺,右側のパーツの一番下の辺は,それぞれ中央のパーツの一番下の辺から C_i, D_i だけ上にある.
すぬけ君は,これらのピースを,一辺が 10^{100} の正方形の形をしたテーブルの上に置こうとしています.この時,次の条件を満たさなければなりません:
- すべてのピースをテーブルの上に置く.
- すべてのピースの中央のパーツの一番下の辺全体は,テーブルの手前の辺に接している.
- 左右のパーツの一番下の辺全体は,テーブルの手前の辺に接しているか,他のピースを構成するあるパーツの上の辺と接している.
- ピースを回転させたり,反転させたりして用いてはならない.
このような並べ方ができるかどうかを判定してください.
制約
- 1 \leq N \leq 100000
- 1 \leq H \leq 200
- 1 \leq A_i \leq H
- 1 \leq B_i \leq H
- 0 \leq C_i \leq H - A_i
- 0 \leq D_i \leq H - B_i
- 入力はすべて整数
入力
入力は以下の形式で標準入力から与えられる。
N H A_1 B_1 C_1 D_1 A_2 B_2 C_2 D_2 : A_N B_N C_N D_N
出力
条件を満たすようにピースを並べることが可能なら YES
を,不可能なら NO
を出力せよ.
入力例 1
3 4 1 1 0 0 2 2 0 1 3 3 1 0
出力例 1
YES
例えば,下図のように並べればよいです.
入力例 2
4 2 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1
出力例 2
NO
入力例 3
10 4 1 1 0 3 2 3 2 0 1 2 3 0 2 1 0 0 3 2 0 2 1 1 3 0 3 2 0 0 1 3 2 0 1 1 1 3 2 3 0 0
出力例 3
YES
Score : 1200 points
Problem Statement
We have N irregular jigsaw pieces. Each piece is composed of three rectangular parts of width 1 and various heights joined together. More specifically:
- The i-th piece is a part of height H, with another part of height A_i joined to the left, and yet another part of height B_i joined to the right, as shown below. Here, the bottom sides of the left and right parts are respectively at C_i and D_i units length above the bottom side of the center part.
Snuke is arranging these pieces on a square table of side 10^{100}. Here, the following conditions must be held:
- All pieces must be put on the table.
- The entire bottom side of the center part of each piece must touch the front side of the table.
- The entire bottom side of the non-center parts of each piece must either touch the front side of the table, or touch the top side of a part of some other piece.
- The pieces must not be rotated or flipped.
Determine whether such an arrangement is possible.
Constraints
- 1 \leq N \leq 100000
- 1 \leq H \leq 200
- 1 \leq A_i \leq H
- 1 \leq B_i \leq H
- 0 \leq C_i \leq H - A_i
- 0 \leq D_i \leq H - B_i
- All input values are integers.
Input
Input is given from Standard Input in the following format:
N H A_1 B_1 C_1 D_1 A_2 B_2 C_2 D_2 : A_N B_N C_N D_N
Output
If it is possible to arrange the pieces under the conditions, print YES
; if it is impossible, print NO
.
Sample Input 1
3 4 1 1 0 0 2 2 0 1 3 3 1 0
Sample Output 1
YES
The figure below shows a possible arrangement.
Sample Input 2
4 2 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1
Sample Output 2
NO
Sample Input 3
10 4 1 1 0 3 2 3 2 0 1 2 3 0 2 1 0 0 3 2 0 2 1 1 3 0 3 2 0 0 1 3 2 0 1 1 1 3 2 3 0 0
Sample Output 3
YES