//Accepted 208 KB 0 ms
//最长公共上升子序列+输出
//dp
//输出时用的递归输出,注意条件判断
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
;
;
char s1[imax_n][imax_stringlen];
char s2[imax_n][imax_stringlen];
int dp[imax_n][imax_n];
int n1,n2;
int max(int a,int b)
{
return a>b?a:b;
}
void Dp()
{
memset(dp,,sizeof(dp));
;i<=n1;i++)
{
;j<=n2;j++)
{
dp[i][j]=max(dp[i-][j],dp[i][j-]);
)
dp[i][j]=max(dp[i][j],dp[i-][j-]+);
}
}
}
void output(int i,int j)
{
) return ;
][j]==dp[i][j])
{
output(i-,j);
return ;
}
]==dp[i][j])
{
output(i,j-);
return ;
}
][j-]+==dp[i][j])
{
output(i-,j-);
)
{
printf("%s",s1[i]);
return ;
}
else
{
printf(" %s",s1[i]);
return ;
}
}
return ;
}
int main()
{
])!=EOF)
{
;
k++;
]!='#')
k++;
n1=k-;
k=;
]!='#')
k++;
n2=k-;
Dp();
output(n1,n2);
printf("\n");
}
;
}