Cod sursa(job #2013886)

Utilizator felician.todeadarius felician.todea Data 22 august 2017 15:57:13
Problema Cel mai lung subsir comun Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 1.01 kb
#include<fstream>
using namespace std;
ifstream f("cmlsc.in");
ofstream g("cmlsc.out");
int i,j,v[1030][1030],vn[1030],vm[1030];

int max3(int a, int b, int c)
{
	int max = a;
	if(b > max)	max = b;
	if(c > max) max = c;
	
	return max;
}

void afisare(int a,int b)
{
    if(v[a][b]!=0)
    {
        if(vn[a]==vm[b])
        {
            afisare(a-1,b-1);
            g<<vn[a]<<' ';
        }
        else
        {
            if(v[a-1][b]>v[a][b-1])
            {
                afisare(a-1,b);
            }
            else
            {
                afisare(a,b-1);
            }
        }
     
    }
}
int m,n;
int main()
{
    f>>m>>n;
    for(i=1;i<=m;i++)
    {
        f>>vm[i];
    }
    for(i=1;i<=n;i++)
    {
        f>>vn[i];
    }
    for(i=1;i<=n;i++)
    {
        for(j=1;j<=m;j++)
        {
			v[i][j] = max3(v[i-1][j-1], v[i-1][j], v[i][j-1]);
			if(vn[i] == vm[j])
				v[i][j] += 1;
        }
    }i--;j--;
    g<<v[i][j]<<'\n';
    afisare(i,j);
}