Cod sursa(job #628656)

Utilizator NitaMihaitavoidcube NitaMihaita Data 1 noiembrie 2011 20:16:56
Problema Cel mai lung subsir comun Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.68 kb
#include<fstream>
#include<iostream.h>
using namespace std;
int x[1025],y[1025],a[1025][1025],n,m;
ifstream fcin("cmlsc.in");
ofstream gcout("cmlsc.out");
void afis(int i,int j)
{
if(i!=0 and j!=0)
	if(x[i]==y[j]){afis(i-1,j-1);gcout<<x[i]<<" ";}
	else if(a[i][j]==a[i][j-1])afis(i,j-1);
	else afis(i-1,j);
}
int main ()
{

int i,j;
fcin>>n>>m;
for(i=1;i<=n;i++)
	fcin>>x[i];
for(j=1;j<=m;j++)
	fcin>>y[j];
for(i=1;i<=n;i++)
	cout<<x[i]<<" ";
cout<<"\n";
for(i=1;i<=m;i++)
	cout<<y[i]<<" ";
for(i=1;i<=n;i++)
	for(j=1;j<=m;j++)
	if(x[i]==y[j])a[i][j]=a[i-1][j-1]+1;
	else a[i][j]=(a[i-1][j]>a[i][j-1])?a[i-1][j]:a[i][j-1];
gcout<<a[n][m]<<"\n";
afis(n,m);
return 0;
}