Cod sursa(job #2495659)

Utilizator TzigCurta Tudor Tzig Data 19 noiembrie 2019 18:41:47
Problema Cel mai lung subsir comun Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.94 kb
#include <fstream>
using namespace std;

int x[1030],y[1030],rez[1030][1030],poz[1030],k=0;

ifstream f("cmlsc.in");
ofstream g("cmlsc.out");

void solutii(int i,int j)
{
    if(i*j){
        if(y[i]==x[j]){
            solutii(i-1,j-1);
            g<<y[i]<<" ";
        }else{
            if(rez[i-1][j]>rez[i][j-1]){
                solutii(i-1,j);
            }else{
                solutii(i,j-1);
            }
        }
    }
}

int main()
{
    ifstream f("cmlsc.in");
    ofstream g("cmlsc.out");
    int n,m;
    f>>n>>m;
    for(int i=1;i<=n;i++){
        f>>x[i];
        rez[0][i]=0;
    }
    for(int i=1;i<=m;i++){
        f>>y[i];
        rez[i][0]=0;
    }
    for(int i=1;i<=m;i++){
        for(int j=1;j<=n;j++){
            if(y[i]==x[j]){
                rez[i][j]=rez[i-1][j-1]+1;
            }else{
                rez[i][j]=max(rez[i][j-1],rez[i-1][j]);
            }
        }
    }
    g<<rez[m][n]<<'\n';
    solutii(m,n);
    return 0;
}