790. 上升序列3

提交0 通过0
通过率0%
时间限制1000ms
内存限制256MiB
    ID: 790 传统题 1000ms 256MiB 尝试: 0 已通过: 0 难度: 提高 上传者: 标签>简单动态规划复杂动态规划编程题c++

题目描述

题目描述

小珅和小婷在研究上升序列。

对于一个给定的 S={a1,a2,a3,…,an}S=\{a_1,a_2,a_3,…,a_n\} , 若有 P={ax1,ax2,ax3,…,axm}P=\{a_{x_1},a_{x_2},a_{x_3},…,a_{x_m}\} , 满足 (x1<x2<…<xm)(x_1\lt x_2\lt …\lt x_m) 且 (ax1<ax2<…<axm)(a_{x_1}\lt a_{x_2}\lt …\lt a_{x_m}) 。那么就称 PP 为 SS 的一个上升序列。如果有多个 PP 满足条件,那么我们想求字典序最小的那个。

给出 SS 序列,给出若干询问。对于第 ii 个询问,求出长度为 LiL_i 的上升序列,如有多个,求出字典序最小的那个(即首先 x1x_1 最小,如果不唯一,再看 x2x_2 最小……),如果不存在长度为 LiL_i 的上升序列,则打印 Impossible。

输入格式

第一行一个 NN,表示序列一共有 NN 个元素。

第二行 NN 个数,为 a1,a2,⋯ ,ana_1, a_2 , \cdots , a_n。

第三行一个 MM,表示询问次数。下面接 MM 行每行一个数 LL,表示要询问长度为 LL 的上升序列。

输出格式

对于每个询问,如果对应的序列存在,则输出,否则打印 Impossible。

样例

样例 1 输入

6
3 4 1 2 3 6
3
6
4
5
Impossible
1 2 3 6
Impossible
5
1 2 3 4 5 
3
1
3
5

1 
1 2 3 
1 2 3 4 5 

1
1 
1
1
1

说明与提示

样例解释

  • 对于第二个询问,选择 a3,a4,a5,a6a_3,a_4,a_5,a_6。

数据范围

对于 30%30\% 的数据,n≤103n \leq 10^3。

对于 100%100\% 的数据,$L \leq n \leq 100000,1 \leq m \leq 10,1 \leq a_i \leq 10^6$。