题目描述
正整数 N と、長さ 2N の 0 か 1 からなる数列 A0,A1,…,A2N−1 が与えられます。 2N 個すべての S ⊆ {0,1,…,N−1 } について、以下の条件を満たす閉曲線 C が存在するか判定し、存在する場合はひとつ構成してください。
- x = ∑i ∈ S 2i とする。また、点集合 BS を { (i+0.5,0.5) ∣ i ∈ S } と定義する。
- 閉曲線 C を BS を通らずに連続的に動かして、閉曲線上のすべての点の y 座標を負にするような方法が存在するならば、Ax = 1 である。
- 閉曲線 C を BS を通らずに連続的に動かして、閉曲線上のすべての点の y 座標を負にするような方法が存在しないならば、Ax = 0 である。
出力方法に関しては、"出力" のチャプターを読んでください。
输入格式
入力は以下の形式で標準入力から与えられる。
N A0A1 ⋯ A2N−1
输出格式
条件を満たす閉曲線が存在しないならば Impossible
と出力せよ。
存在するならば、まず 1 行目に Possible
と出力せよ。 その後、以下の形式で構成した閉曲線を出力せよ。
L x0 y0 x1 y1 : xL yL
これは、閉曲線として (x0,y0),(x1,y1),…,(xL,yL) をこの順に通る閉折れ線を選ぶことを意味する。
出力は次の条件を満たしている必要がある。
- 0 ≤ xi ≤ N, 0 ≤ yi ≤ 1, xi,yi は整数 (0 ≤ i ≤ L)
- ∣xi−xi+1∣ + ∣yi−yi+1∣ = 1 (0 ≤ i ≤ L−1)
- (x0,y0) = (xL,yL)
また、閉曲線の長さ L は、 0 ≤ L ≤ 250000 を満たす必要がある。
もとの問題で条件を満たす閉曲線が存在するならば、この出力形式のもとでも存在することが証明できる。
题目大意
给定正整数 N(1≤N≤8)以及一个长度为 2N 的 01 序列 A0,A1,⋯,A2N−1(保证 A0=1)。判断是否存在一条闭合曲线 C,它对于所有的 2N 个集合 S⊆{0,1,⋯,N−1} 都满足以下条件:
- 令 x=∑i∈S2i,BS 是点集 {(i+0,5,0,5)∣i∈S};
- 若 Ax=1,则存在一种方法连续地移动闭曲线 C ,使得移动后的 C 上的任意一点的 y 坐标都为负,且在此过程中 C 不碰到 BS;
- 若 Ax=0,则不存在这样一种方法。
C 是一条闭曲线,当且仅当:
- C 是一个连续函数 C:[0,1]→R2,满足 C(0)=C(1)。
我们称一条闭曲线 C 能够被连续地移动,且在此过程中不碰到点集 X,最终成为一条闭曲线 D,当且仅当:
- 存在一个函数 f:[0,1]×[0,1]→R2 满足以下条件:
- f 是连续的。
- f(0,t)=C(t)。
- f(1,t)=D(t)。
- f(x,t)∈X
若存在这样的 C,请构造一条这样的 C 并输出,格式是:
先输出一个整数 L,需满足 0≤L≤250000。
接下来的 L+1 行,每行两个整数 x,y,表示你构造的闭曲线 C 是一条依次经过这 L 个点的多边形,需满足:
- 0≤xi≤N,0≤yi≤1,且 xi,yi 是整数,其中 0≤i≤L。
- ∣xi−xi+1∣+∣yi−yi+1∣=1,其中 0≤i≤L−1。
- (x0,y0)=(xL,yL)。
可以证明,如果存在一条闭曲线满足题目中的要求,那么也存在一条闭曲线能够用这种方式表示出来。
1
10
Possible
4
0 0
0 1
1 1
1 0
0 0
2
1000
Possible
6
1 0
2 0
2 1
1 1
0 1
0 0
1 0
2
1001
Impossible
1
11
Possible
0
1 1
提示
補足
C が閉曲線であるとは、次のように定義される。
- C は [0,1] から R2 への連続関数であり、C(0) = C(1) を満たす。
閉曲線 C を点集合 X を通らずに閉曲線 D に連続的に動かせるとは、次のように定義される。
- 次の条件を満たす関数 $ f\ :\ [0,1]\ \times\ [0,1]\ \rightarrow\ \mathbb{R}^2 $ が存在する。
- f は連続。
- f(0,t) = C(t)
- f(1,t) = D(t)
- f(x,t) ∈/ X
制約
- 1 ≤ N ≤ 8
- Ai = 0,1 (0 ≤ i ≤ 2N−1)
- A0 = 1
Sample Explanation 1
S = ∅ のときは閉曲線上のすべての点の y 座標を負にすることが可能です。 ![](https://img.atcoder.jp/agc043/d44ca639698b4c14bb84b90da5442ca6.png) S = {0} のときはどのようにしても閉曲線上のすべての点の y 座標を負にすることはできません。 ![](https://img.atcoder.jp/agc043/5a960a0c4167e8593b6c8f8af685253d.png)
Sample Explanation 2
出力は図のような閉曲線を表しています。 ![](https://img.atcoder.jp/agc043/283e490d520a451f1b15160900c9b545.png)