Cod sursa(job #739088)

Utilizator dutzulBodnariuc Dan Alexandru dutzul Data 22 aprilie 2012 02:25:49
Problema Cel mai lung subsir comun Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <cstdio>
#define LE 3000
using namespace std;
int l[LE],n,m,i,a[LE],b[LE],V[LE],PMAX,good[LE];

void check()
   {
	int j,p=0,poz=1;
	
      for(j=1;j<=n;++j) if (l[j])
			V[++p]=a[j];
	   
	  for(j=1;j<=m;++j)
		  if (b[j]==V[poz]&&poz<p)
			  ++poz;
		  
	  if (poz==p&&p>PMAX) 
		for(j=1,PMAX=p;j<=p;++j)
		     good[j]=V[j];
   }

void back (int k) 
   {
	 if (k>n) check();
	 else 
	  {
		l[k]=0;
		back(k+1);
		l[k]=1;
		back(k+1);
	  }
   }

int main(){
	freopen("cmlsc.in","r",stdin);
	freopen("cmlsc.out","w",stdout);
	
	scanf("%ld%ld",&n,&m);
	
	for(i=1;i<=n;++i)
		scanf("%ld",&a[i]);
	
	for(i=1;i<=m;++i)
		scanf("%ld",&b[i]);
	
	 back(1);
	 
	 printf("%ld\n",PMAX);
	 
	 for(i=1;i<=PMAX;++i) 
		 printf("%ld ",good[i]);
	return 0;
}