Cod sursa(job #672210)

Utilizator erik95Scharscher Erik erik95 Data 1 februarie 2012 18:54:12
Problema Cel mai lung subsir comun Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include<iostream>
#include<fstream>
using namespace std;
int main()
{ifstream f("cmlsc.in");
ofstream g("cmlsc.out");
int m,n,i,j,k,v[100][100];
char a[100],b[100],c[100];
f>>m;
f>>n;
k=0;
for(i=1;i<=m;i++)
	f>>a[i];
for(i=1;i<=n;i++)
	f>>b[i];
for(i=0;i<=m;i++)
	for(j=0;j<=n;j++)
		v[i][j]=0;
cout<<a[1]<<" "<<b[1]<<endl;
for(i=1;i<=m;i++)
	for(j=1;j<=n;j++)
		if(a[i]==b[j])
			v[i][j]=v[i-1][j-1]+1;
		else
			if(v[i-1][j]>v[i][j-1])
					v[i][j]=v[i-1][j];
			else 
				if(v[i][j-1]>=v[i-1][j])
					v[i][j]=v[i][j-1];
for(i=1;i<=m;i++)
	{for(j=1;j<=n;j++)
		cout<<v[i][j]<<" ";
	cout<<endl;}
i=m;
j=n;
while(i>0&&j>0)
	if(v[i][j]==v[i-1][j])
		i--;
	else 
		if(v[i][j]==v[i][j-1])
			j--;
		else {k++;
			  c[k]=a[i];
			  i--;
			  j--;	
			    }
g<<k<<endl;		
for(i=k;i>=1;i--)
	g<<c[i]<<" ";
f.close();
g.close();
}