记录编号 550763 评测结果 AAAAAAAAAA
题目名称 [HAOI 2007]上升序列 最终得分 100
用户昵称 Gravatar夜莺 是否通过 通过
代码语言 C++ 运行时间 2.456 s
提交时间 2020-03-16 17:22:51 内存使用 4.55 MiB
显示代码纯文本
#include<cstdio>
#include<algorithm>
using namespace std;
const int MAXN=10010;
int a[MAXN],ans[MAXN],f[MAXN],road[MAXN];
int n,m,maxn;
int main(){
	freopen("lis.in","r",stdin);
	freopen("lis.out","w",stdout);
	scanf("%d",&n);
	for(int i=1;i<=n;i++){
		scanf("%d",&a[i]);
		f[i]=1;
	}
	int maxx;
	for(int i=n-1;i>=1;i--){
		maxx=1;
		for(int j=i+1;j<=n;j++){
			if(a[i]<a[j]){
				if(f[j]+1>maxx){
					maxx=f[j]+1;
				}
			}
		}
		f[i]=maxx;
		maxn=max(maxn,f[i]);
	}
	scanf("%d",&m);
	for(int i=1,x;i<=m;i++){
		scanf("%d",&x);
		if(x<1||x>maxn){
			printf("Impossible\n");
			continue;
		}
		int smaller=-1;
		for(int j=1;j<=n;j++){
			if(f[j]>=x&&a[j]>smaller){
				printf("%d ",a[j]);
				smaller=a[j];
				x--;
				if(!x)break;
			}
		}
		printf("\n");
	}
	return 0;
}