给三个1~ N 的排列(permutation) A, B, C,现在要你对A 做一些操作,每次操作可以交换A 中的相邻两个数,请使用最少操作次数把A 变成B,请问过程中有没有可能经过C (C 若等于A 或B 也算是经过)。举例来说:当A = `2,3,1`, B = `1,2,3` 时,那么用最少操作次数把A 变成B 只有一种方法:`2 ,3,1` → `2,1,3`→ `1,2,3`,所以当C = `2,3,1`, `2,1,3 ` 或`1,2,3` 时,答案为`Possible`;反之,当C = `1,3,2`, `3,1,2` 或`3,2,1` 时,答案为`Impossible`。
由于小月是按照 AC 人数由多至小在刷题,所以没有多想就写了一个拿到 WA 的作法如下:
判断对于 1~N 的每个数字 x,是否 x 在 C 中出现的位置都夹在 x 在 A 及 B 中出现的位置之间。
也就是说,对于所有x,其中Ai = Bj = Ck = x,若min(i,j)≤k≤max(i,j)总是成立则答案为`Possible`。
小月获得WA 以后觉得很懊恼,开始认真研究这个解法错的有多离谱,他想要知道给定两个排列A 和B,1 ~ N里有哪些整数x 会满足:存在一个排列C,其中Ai = Bj = Ck = x,排列A,B,C 在该题答案为`Possible` 但k<min(i,j) 或 max(i,j)<k。
测试数据共有三行。
第一行有一个正整数N,第二行有一个排列A1, A2,..., AN,第三行也有一个排列B1, B2,..., BN。A, B为给定的两个排列。
输出一个长度为N的字串。若存在一个排列C,其中Ai = Bj = Ck = x,排列A,B,C在该题答案为`Possible`但k<min(i,j) 或 max(i,j)<k,则输出的字串的第x个字元为`'1'`,否则为`'0'`。
2≤N≤106A 和 B 是 1∼N 的一個排列