Pagini recente » Cod sursa (job #3168503) | Cod sursa (job #2868353) | Cod sursa (job #3227630) | Cod sursa (job #1091470) | Cod sursa (job #1760547)
#include <iostream>
#include <fstream>
#define FOR(i, k, v) for(i = k; i <= v; i++)
#define FOR2(i, k, v) for(i = k; i >= v; i--)
#define Nmax 1024
#define maxx(a, b) ((a > b) ? a : b )
#define FOR_double(i,j,k1,v1,k2,v2) for(i = k1; i <= v1; i++)for(j = k2; j <= v2; j++)
using namespace std;
int i,j,n,m,a[Nmax],b[Nmax],t[Nmax][Nmax],megoldas[Nmax],q,q2;
int main()
{
ifstream be("cmlsc.in");
ofstream ki("cmlsc.out");
be>>n>>m;
FOR(i,1,n)
be>>a[i];
FOR(i,1,m)
be>>b[i];
FOR(i,1,n)
FOR(j,1,m)
if(a[i]==b[j])
t[i][j] = 1 + t[i-1][j-1];
else
t[i][j] = maxx(t[i-1][j],t[i][j-1]);
ki<<t[n][m]<<endl;
q = t[n][m];
q2 = q;
i = n;
j = m;
while(t[i][j] !=0 )
{
if(a[i] == b[j])
{
megoldas[q] = a[i];
q--;
}
if(t[i-1][j] > t[i][j-1])
{
i--;
}
else
{
j--;
}
}
FOR(i,1,q2)
ki<<megoldas[i]<<" ";
return 0;
}