AT_xmascontest2015_f FILO Sort
Description
[problemUrl]: https://atcoder.jp/contests/xmascontest2015noon/tasks/xmascontest2015_f
$ (1,\ 2,\ ...,\ N) $ の順列 $ a_i $ と $ Q $ 個のクエリが与えられる。$ i $ 番目のクエリの内容は、$ x_i $ が与えられるので数列の $ x_i $ 番目と $ x_i+1 $ 番目の要素の値を入れ替える、というクエリである。
クエリで数列が変更されるたびに、それが**良い数列**となっているか判定せよ。ただし良い数列は以下のように定義される数列である。
$ 3 $ つの[スタック](https://ja.wikipedia.org/wiki/%E3%82%B9%E3%82%BF%E3%83%83%E3%82%AF)を考える。それぞれを stack1、stack2、stack3 と呼ぶことにする。最初に、stack1 に $ a_1,\ a_2,\ ...,\ a_n $ をこの順に push する。その後、
- stack1 から pop し、pop した整数を $ x $ とする。$ x $ を stack2 に push する。
- stack2 から pop し、pop した整数を $ x $ とする。$ x $ を stack3 に push する。
という $ 2 $ 種類の動作を好きなように行い、stack3 の要素を先頭から見た時 $ 1,\ 2,\ ...,\ N $ となるように出来るとき、$ a_i $ は良い数列である。
ただし、push とはスタックの末尾に要素を追加する動作、pop はスタックの末尾から要素を取り出す動作のことを指す。
Input Format
入力は以下の形式で標準入力から与えられる。
> $ N $ $ a_1 $ $ a_2 $ $ a_3 $ ... $ a_N $ $ Q $ $ x_1 $ $ x_2 $ : $ x_Q $
- $ 1 $ 行目には順列の長さ $ N(2\ ≦\ N\ ≦\ 100,000) $ が与えられる。
- $ 2 $ 行目には数列 $ a_i $ が空白区切りで与えられる
- $ 3 $ 行目にはクエリの個数 $ Q(1\ ≦\ Q\ ≦\ 100,000) $ が与えられる。
- 続く $ Q $ 行にはクエリの内容を表す整数 $ x_i\ (1\ ≦\ x_i\ ≦\ N-1) $ が与えられる。
Output Format
出力は標準出力に行い、末尾に改行を入れること。
出力は $ Q $ 行からなる。
$ i $ 行目には、$ i $ 番目のクエリの後に $ a_i $ が良い数列となっているならば `Yes`、そうでなければ `No` と出力せよ。