Pagini recente » Cod sursa (job #239634) | Cod sursa (job #2875732) | Cod sursa (job #1982098) | Cod sursa (job #1774992) | Cod sursa (job #1386246)
#include<fstream>
#include<iostream>
using namespace std;
ifstream fin("cmlsc.in");
ofstream fout("cmlsc.out");
int a[1025],b[1025],n,m,mat[1025][1025],nr,v[1025];
void citire()
{
fin>>n>>m;
for(int a1=1;a1<=n;a1++)
{
fin>>a[a1];
}
for(int a2=1;a2<=m;a2++)
{
fin>>b[a2];
}
}
void fct()
{
for(int a1=1;a1<=n;a1++)
for(int a2=1;a2<=m;a2++)
{
if(a[a1]==b[a2])
{
if(mat[a1-1][a2-1]+1>=mat[a1-1][a2] and mat[a1-1][a2-1]+1>=mat[a1][a2-1])
{
mat[a1][a2]=mat[a1-1][a2-1]+1;
}
else
{
if(mat[a1-1][a2]>=mat[a1][a2-1])
{
mat[a1][a2]=mat[a1-1][a2];
}
else
{
mat[a1][a2]=mat[a1][a2-1];
}
}
}
else
{
if(mat[a1-1][a2]>=mat[a1][a2-1])
{
mat[a1][a2]=mat[a1-1][a2];
}
else
{
mat[a1][a2]=mat[a1][a2-1];
}
}
}
}
void afisare()
{
int a1=n,a2=m;
while(mat[a1][a2])
{
if(mat[a1-1][a2]==mat[a1][a2]) a1--;
else if(mat[a1][a2-1]==mat[a1][a2]) a2--;
else
{
nr=mat[a1][a2];
v[nr]=a[a1];
a1--;
}
}
for(int a=1;a<=mat[n][m];a++)
{
fout<<v[a]<<" ";
}
}
int main()
{
citire();
fct();
afisare();
}