Pagini recente » Cod sursa (job #2983807) | Cod sursa (job #1775627) | Cod sursa (job #1715264) | Cod sursa (job #384188) | Cod sursa (job #3279068)
#include <fstream>
using namespace std;
ifstream fin("cmlsc.in");
ofstream fout("cmlsc.out");
int n,m,A[1025],B[1025],DP[1025][1025],cnt,V[1001];
int main(){
fin >> n >> m;
for(int i=1;i<=n;i++) fin >> A[i];
for(int j=1;j<=m;j++) fin >> B[j];
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++){
if(A[i] != B[j]){
DP[i][j] = max(DP[i-1][j],DP[i][j-1]);
}
else DP[i][j] = 1 + DP[i-1][j-1];
}
fout << DP[n][m] << '\n';
for(int i = n; i >= 1; i--)
for(int j = m; j >= 1; j--){
if(A[i] == B[j]){
V[++cnt] = A[i];
i--;
j--;
}
else if(DP[i-1][j]==DP[i][j]) i--;
}
for(int i=cnt;i>=1;i--) fout << V[i] << ' ';
}