Cod sursa(job #878159)

Utilizator mazaandreiAndrei Mazareanu mazaandrei Data 14 februarie 2013 08:25:48
Problema Cel mai lung subsir comun Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.55 kb
#include<fstream>
#include<algorithm>
#define nmax 1050
using namespace std;
int a[nmax],b[nmax],m[nmax][nmax],na,nb,v[nmax];
int main(){
	ifstream in("clmsc.in"); ofstream out("clmsc.out");
	in>>na>>nb;
	for(int i=1;i<=na;++i) in>>a[i];
	for(int i=1;i<=nb;++i) in>>b[i];
	for(int i=1;i<=na;++i){
		for(int j=1;j<=nb;++j){
			if(a[i]==b[j]) {m[i][j]=m[i-1][j-1]+1; v[m[i][j]]=a[i];}
			else m[i][j]=max(m[i-1][j], m[i][j-1]);
		}
	}
	out<<m[na][nb]<<'\n';
	for(int i=1;i<=m[na][nb];++i) out<<v[i]<<' ';
	out<<'\n';
	out.close(); return 0;
}