Cod sursa(job #2067136)

Utilizator aditzu7Adrian Capraru aditzu7 Data 15 noiembrie 2017 21:36:59
Problema Cel mai lung subsir comun Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.57 kb
#include <fstream>

using namespace std;
ifstream f("cmlsc.in");
ofstream g("cmlsc.out");
int m,j,i,n,c[1001][1001],a[1001],b[1001];
void afis(int n,int m){
if(n>=1&&m>=1)
if(a[n]==b[m]){afis(n-1,m-1);g<<a[n]<<" ";}
else {
    if(c[n-1][m]>c[n][m-1]) afis(n-1,m);
    else afis(n,m-1);

}



}
int main()
{f>>n>>m;
for(i=1;i<=n;i++) f>>a[i];
for(i=1;i<=m;i++) f>>b[i];
c[0][0]=0;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++){
    if(a[i]==b[j]) c[i][j]=c[i-1][j-1]+1;
    else c[i][j]=max(c[i-1][j],c[i][j-1]);


}
g<<c[n][m]<<endl;
afis(n,m);
       return 0;
}