Pagini recente » Cod sursa (job #1763442) | Cod sursa (job #2066075) | Cod sursa (job #3215680) | Cod sursa (job #1899188) | Cod sursa (job #2389600)
#include <iostream>
#include <fstream>
using namespace std;
int v1[105] , v2[105] , M[105][105] , afis[105] , k;
ifstream fin("cmlsc.in");
ofstream fout("cmlsc.out");
int main()
{
int m , n;
fin >> n >> m;
for( int i = 1 ; i <= n ; ++i )
fin >> v1[i];
for( int j = 1 ; j <= m ; ++j )
fin >> v2[j];
for( int i = 1 ; i <= n ; ++i )
for( int j = 1 ; j <= m ; ++j )
if(v1[i] == v2[j])
M[i][j] = 1 + M[i-1][j-1];
else
M[i][j] = max( M[i-1][j] , M[i][j-1] );
for( int i = n , j = m ; i && j ; )
if( v1[i] == v2[j] )
afis[k+1] = v1[i], --i , --j , ++k;
else if( M[i-1][j] < M[i][j-1] )
--j;
else
--i;
fout << k << '\n';
for( int i = k ; i ; --i )
fout << afis[i] << " ";
}