Cod sursa(job #1005543)

Utilizator john95Andrei Madalin john95 Data 5 octombrie 2013 11:26:34
Problema Cel mai lung subsir comun Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.61 kb
#include <iostream>
#include <fstream>

using namespace std;
int v[1025],k=0,v1[1025],v2[1025],N,M,m[1025][1025];
ifstream fin("pag.in");
int main()
{   int i,j;
    fin>>N>>M;
    for(i=1;i<=N;i++)
        fin>>v1[i];
    for(i=1;i<=M;i++)
        fin>>v2[i];

    for(i=1;i<=N;i++)
        {
            for(j=1;j<=M;j++)
            {   if(v1[i]==v2[j])
                    {m[i][j]=m[i-1][j-1]+1;v[i]=++k;}
                else m[i][j]=max(m[i-1][j],m[i][j-1]);

            }}

    cout<<m[N][M];
    cout<<"\n";


    for(i=1;i<=N;i++)
        if(v[i])cout<<v1[i]<<" ";
    return 0;
}