Problem
【HAOI2007】上升序列
Description
对于一个给定的,若有,满足()且()。那么就称为的一个上升序列。如果有多个满足条件,那么我们想求字典序最小的那个。任务给出序列,给出若干询问。对于第个询问,求出长度为的上升序列,如有多个,求出字典序最小的那个(即首先最小,如果不唯一,再看最小……),如果不存在长度为的上升序列,则输出.
Input
第一行一个,表示序列一共有个元素第二行个数,为 第三行一个,表示询问次数。下面接行每行一个数,表示要询问长度为的上升序列。,
Output
Sample Input
1 | 6 |
Sample Output
1 | Impossible |
标签:DP
Solution
一道的变形。
显然需要先预处理出每个数向后能组成的的最大长度。
对于每次询问,从前往后取,一旦某数字的最大长度比大,则此数可加入答案。顺序构造即可。
Code
1 |
|