Pagini recente » Cod sursa (job #2418957) | Cod sursa (job #1595672) | Cod sursa (job #2278010) | Cod sursa (job #3143590) | Cod sursa (job #1915700)
#include <fstream>
#include <stack>
using namespace std;
ifstream f ("cmlsc.in");
ofstream g ("cmlsc.out");
int i, j, n, m, a[1025] , b[1025] , dp [1025][1025], ma, nr, r[1025] ;
int main ()
{
f>>n>>m;
for ( i = 1; i <= n; i++ )
{
f>>a[i];
}
for ( i = 1; i <= m; i++ )
{
f>>b[i];
}
for ( i = 1 ; i <= n ; i++ )
{
for ( j = 1; j <= m; j ++ )
{
if ( b[j] == a[i] )
{
dp[ i ][ j ] = 1 + dp [ i - 1 ][ j - 1 ];
}
else
{
dp[ i ][ j ] = max ( dp [ i - 1 ][ j ], dp [ i ][ j - 1 ] );
}
}
}
i=n;
j=m;
while ( i > 1 || j > 1 )
{
if ( dp [ i ][ j ] == dp [ i ][ j -1 ] )
{
j--;
}
else if ( dp[ i ][ j ] == dp [ i - 1 ] [ j ] )
{
i--;
}
else
{
r [ dp[i][j] ] = a[i];
i--;
j--;
}
}
g<<dp[n][m]<<'\n';
if ( dp[1][1] == 1 )
{
r[1]=a[1];
}
for( i = 1 ; i <= dp[ n ][ m ] ; i++ )
g<<r[ i ]<<' ';
return 0;
}