Cod sursa(job #502937)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 20 noiembrie 2010 21:39:29
Problema Cel mai lung subsir comun Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include<cstdio>
int main()
{int i,j,n,m,x[2000],y[2000],k=0,v[2000],max,t=1,l[2000];
freopen("cmlsc.in","r",stdin);
freopen("cmlsc.out","w",stdout);
scanf("%d%d",&n,&m);
for(i=1;i<=n;i++)
      scanf("%d",&x[i]);
for(i=1;i<=m;i++)
      scanf("%d",&y[i]);
for(i=1;i<=n;i++)
      {for(j=1;j<=m;j++)
      if(x[i]==y[j])
             {k++;
             v[k]=j;}}
l[k]=1;
for(i=k-1;i>=1;i--)
      {max=0;
      for(j=i+1;j<=k;j++)
      if(v[j]>v[i]&&l[j]>max)
              max=l[j];
      l[i]=max+1;}
max=l[1];
for(i=2;i<=k;i++)
if(l[i]>max)
      {max=l[i];
      t=i;}
printf("%d\n",max);
printf("%d ",y[v[t]]);
for(i=t+1;i<=k;i++)
if(v[i]>v[t]&&l[i]==max-1)
      {printf("%d ",y[v[i]]);
      max--;}
printf("\n");
fclose(stdin);
fclose(stdout);
return 0;}