#ATagc043e. [AGC043E] Topology

[AGC043E] Topology

题目描述

给定一个正整数 NN,以及一个长度为 2N2^N 的仅由 0011 组成的数列 A0,A1,,A2N1A_0,A_1,\ldots,A_{2^N-1}。对于所有 2N2^NS{0,1,,N1}S \subseteq \{0,1,\ldots,N-1\},请判断是否存在满足以下条件的闭曲线 CC,若存在请构造一个。

  • x=iS2ix = \sum_{i \in S} 2^i。定义点集 BS={(i+0.5,0.5)  iS}B_S = \{(i+0.5,0.5)\ |\ i \in S\}
  • 如果存在一种方法,可以将闭曲线 CC 连续地移动,使其不经过 BSB_S,并且使得闭曲线上所有点的 yy 坐标都变为负数,则 Ax=1A_x = 1
  • 如果不存在上述方法,则 Ax=0A_x = 0

关于输出方式,请阅读“输出格式”章节。

输入格式

输入通过标准输入给出,格式如下:

NN A0A1A2N1A_0A_1\cdots A_{2^N-1}

输出格式

如果不存在满足条件的闭曲线,则输出 Impossible

如果存在,首先输出一行 Possible。然后,按照以下格式输出你构造的闭曲线:

LL x0x_0 y0y_0 x1x_1 y1y_1 \cdots xLx_L yLy_L

这表示选择 (x0,y0),(x1,y1),,(xL,yL)(x_0,y_0),(x_1,y_1),\ldots,(x_L,y_L) 依次经过,作为闭折线表示闭曲线。

输出需满足以下条件:

  • 0xiN0 \leq x_i \leq N0yi10 \leq y_i \leq 1xi,yix_i, y_i 为整数,0iL0 \leq i \leq L
  • xixi+1+yiyi+1=1|x_i-x_{i+1}| + |y_i-y_{i+1}| = 10iL10 \leq i \leq L-1
  • (x0,y0)=(xL,yL)(x_0,y_0) = (x_L,y_L)

此外,闭曲线的长度 LL 需满足 0L2500000 \leq L \leq 250000

可以证明,如果原问题中存在满足条件的闭曲线,则在此输出格式下也一定存在。

样例 1

输入

1
10

输出

Possible
4
0 0
0 1
1 1
1 0
0 0

样例 2

输入

2
1000

输出

Possible
6
1 0
2 0
2 1
1 1
0 1
0 0
1 0

样例 3

输入

2
1001

输出

Impossible

样例 4

输入

1
11

输出

Possible
0
1 1

说明/提示

补充说明

闭曲线 CC 的定义如下:

  • CC 是从 [0,1][0,1]R2\mathbb{R}^2 的连续函数,且 C(0)=C(1)C(0) = C(1)

将闭曲线 CC 连续地移动为不经过点集 XX 的另一闭曲线 DD,定义如下:

  • 存在满足以下条件的函数 f:[0,1]×[0,1]R2f : [0,1] \times [0,1] \rightarrow \mathbb{R}^2
    • ff 是连续的。
    • f(0,t)=C(t)f(0,t) = C(t)
    • f(1,t)=D(t)f(1,t) = D(t)
    • f(x,t)Xf(x,t) \notin X

约束条件

  • 1N81 \leq N \leq 8
  • Ai=0A_i = 0110i2N10 \leq i \leq 2^N-1
  • A0=1A_0 = 1

样例解释 1

S=S = \emptyset 时,可以将闭曲线上的所有点的 yy 坐标变为负数。
S={0}S = \{0\} 时,无论如何都无法使闭曲线上的所有点的 yy 坐标变为负数。

样例解释 2

输出表示如图所示的闭曲线。

由 ChatGPT 4.1 翻译