Cod sursa(job #1848080)

Utilizator MihalachiRazvanMihalachi Razvan MihalachiRazvan Data 15 ianuarie 2017 14:30:59
Problema Cel mai lung subsir comun Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 1.26 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("cmlsc.in");
ofstream fout("cmlsc.out");
int n,m,cmsc[1027][1027],sir[1025],maxi;
int maxim(int a,int b)
{
    if(a>b)
        return a;
    else
        return b;
}
void citire()
{
    fin>>n>>m;
    for(int i=2;i<=n+1;i++)
        fin>>cmsc[0][i];
        for(int j=2;j<=m+1;j++)
        fin>>cmsc[j][0];
}
void build()
{
     int sw=1;
     for(int i=2;i<=m+1;i++)
                for(int j=2;j<=n+1;j++)
                if(cmsc[i][0]==cmsc[0][j])
                cmsc[i][j]=1+cmsc[i-1][j-1];
            else
                cmsc[i][j]=maxim(cmsc[i][j-1],cmsc[i-1][j]);

}
void parcurgere()
{
    int i=m+1,j=n+1;
    maxi=cmsc[m+1][n+1];
    fout<<maxi<<endl;
    while(cmsc[i][j]!=0)
    {
        if(cmsc[i][j]==cmsc[i][j-1])
            j=j-1;
        else
        {
            i=i-1;
            j=j-1;
            sir[maxi]=cmsc[0][j+1];
            maxi=maxi-1;
        }
    }
    for(i=1;i<=cmsc[m+1][n+1];i++)
    fout<<sir[i]<<"  ";

}
int main()
{
    citire();
    build();
    for(int i=0;i<=m+1;i++)
    {
        for(int j=0;j<=n+1;j++)
            cout<<cmsc[i][j]<<"  ";
        cout<<endl;}
    parcurgere();
    return 0;
}