10pts,求助
查看原帖
10pts,求助
635829
D_FANG楼主2023/5/12 11:01
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
int n,a[100010],m;
int f[100010],poi[100010];
void print(int i){
	if (poi[i]==i){
		printf("%d ",a[i]);
		return ;
	}
	print(poi[i]);
	printf("%d ",a[i]);
}
int main(){
	scanf("%d",&n);
	for (int i=1;i<=n;i++){
		scanf("%d",&a[i]);
	}
	scanf("%d",&m);
	for (int i=1;i<=n;i++){
		f[i]=1;
		poi[i]=i;
		for (int j=1;j<i;j++){
			if (a[i]>a[j]&&f[i]<f[j]+1){
				f[i]=f[j]+1;
				poi[i]=j;
			}
		}
	}
	int ans=0;
	for (int i=1;i<=n;i++){
		ans=max(ans,f[i]);
	}
	for (int lqy=1;lqy<=m;lqy++){
		int l;
		scanf("%d",&l);
		if (l>ans){
			printf("Impossible\n");
			continue;
		}
		for (int i=1;i<=n;i++){
			if (f[i]==l){
				print(i);
				printf("\n");
				break;
			}
		}
	}
	return 0;
} 
2023/5/12 11:01
加载中...