Pagini recente » Cod sursa (job #1149356) | Cod sursa (job #295950) | Cod sursa (job #1303120) | Cod sursa (job #2746246) | Cod sursa (job #1337398)
#include <fstream>
#include <algorithm>
#define IN "cmlsc.in"
#define OUT "cmlsc.out"
const int MAX = 1034 ;
using namespace std;
ifstream fin ( IN ) ;
ofstream fout ( OUT ) ;
int d [ MAX ] [ MAX ] ;
int a [ MAX ] , b [ MAX ] ;
int v [ MAX ] ;
int main()
{
int n , m ;
fin >> n >> m ;
for ( register int i = 1 ; i <= n ; ++ i )
fin >> a [ i ] ;
for ( register int i = 1 ; i <= m ; ++ i )
fin >> b [ i ] ;
for ( register int i = 1 ; i <= n ; ++ i)
for ( register int j = 1 ; j <= m ; ++ j)
if ( a [ i ] == b [ j ] )
d [ i ] [ j ] = 1 + d [ i - 1 ] [ j - 1 ] ;
else
d [ i ] [ j ] = max ( d [ i - 1 ] [ j ] , d [ i ] [ j - 1 ] ) ;
fout << d [ n ] [ m ] << '\n' ;
int i = n , j = m , u = 0 ;
while ( i )
if ( a [ i ] == b [ j ] ){
v [ ++ u ] = a [ i ] ;
i -- ;
j -- ;
}
else
if ( d [ i - 1 ] [ j ] < d [ i ] [ j - 1 ] )
j -- ;
else
i -- ;
for ( register int k = d [ n ] [ m ] ; k >= 1 ; -- k )
fout << v [ k ] << " " ;
return 0;
}