Pagini recente » Cod sursa (job #3136711) | Cod sursa (job #2253655) | Cod sursa (job #1535227) | Cod sursa (job #2267860) | Cod sursa (job #2509355)
#include <bits/stdc++.h>
#define NMAX 1030
using namespace std;
ifstream f ("cmlsc.in");
ofstream g ("cmlsc.out");
short n , m;
int a1[NMAX] , a2[NMAX];
int a[NMAX][NMAX];
int main()
{
short i , j;
f >> n >> m;
for(i = 1 ; i <= n ; i++)
f >> a1[i];
for(i = 1 ; i <= m ; i++)
f >> a2[i];
for(i = 1 ; i <= n ; i++)
for(j = 1 ; j <= m ; j++)
if(a1[i] == a2[j])
a[i][j] = a[i - 1][j - 1] + 1;
else a[i][j] = max(a[i - 1][j] , a[i][j - 1]);
g << a[n][m] << '\n';
// for(i = 1 ; i <= n ; i++)
// for(j = 1 ; j <= m ; j++)
// cout << a[i][j] << " \n" [j == m];
short lin = n , col = m , lg = a[n][m];
while(a[lin][col])
{
if(a[lin][col] == lg && a1[lin] == a2[col])
{
g << a1[lin] << ' ';
--lin;
--col;
--lg;
}
else
{
if(a[lin - 1][col] > a[lin][col - 1])
--lin;
else --col;
}
}
return 0;
}