Cod sursa(job #2200647)

Utilizator daniel.vbVasile Daniel daniel.vb Data 2 mai 2018 07:33:34
Problema Cel mai lung subsir comun Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.94 kb
#include <stdio.h>


int m,n,p,a[1026],b[1026],c[1026],u[1026];

int main()
{
    int i,j,aux,aux1;
    FILE *f,*g;

    f=fopen("cmlsc.in","r");
    g=fopen("cmlsc.out","w");

    fscanf(f,"%d%d",&m,&n);

    for(i=1;i<=m;i++)
        fscanf(f,"%d",&a[i]);
    for(i=1;i<=n;i++)
        fscanf(f,"%d",&b[i]);

    u[0]=-1;
    for(i=1;i<=m;i++)
    {
        aux=0;
        for(j=1;j<=n;j++)
        {
            aux1=c[j];
            if(a[i]==b[j])
            {
                 c[j]=aux+1;
                 u[j]=b[j];
            }
            else
            {
                if(c[j-1]>c[j])
                {
                   c[j]=c[j-1];
                   u[j]=u[j-1];
                }
            }
            aux=aux1;
        }
    }
    fprintf(g,"%d\n",c[n]);
    for(j=1;j<=n;j++)
    {
        if(u[j]!=u[j-1])
            fprintf(g,"%d ",u[j]);
    }
    fclose(f);
    fclose(g);
}