Cod sursa(job #2170679)

Utilizator stanculescu_gGabriel Stanculescu stanculescu_g Data 15 martie 2018 09:21:27
Problema Cel mai lung subsir comun Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include <fstream>

using namespace std;

FILE*fin=fopen ("cmlsc.in", "r");
FILE*fout=fopen ("cmlsc.out", "w");

int i, j, v[1025], w[1025], a[1025][1025], sf[1025], bst;

int main ()
{
    int m, n;
    fscanf (fin, "%d", &m);
    fscanf (fin, "%d", &n);
    for (i=1; i<=m; i++)
        fscanf (fin, "%d", &v[i]);
    for (j=1; j<=n; j++)
        fscanf (fin, "%d", &w[i]);
    for (i=1; i<=m; i++)
        for (j=1; j<=n; j++)
            if (v[i]==w[j])
                a[i][j]=1+a[i-1][j-1];
            else
                a[i][j]=max(a[i-1][j], a[i][j-1]);
    for (i=m, j=n; i; )
        if (v[i]==w[j])
        {
            sf[bst]=v[i];
            i--;
            j--;
            bst++;
        }
    fprintf (fout, "%d\n", bst);
    for (i=bst; i; i--)
        fprintf (fout, "%d ", sf[i]);
    fprintf (fout, "%c", '\n');
    fflush;
    return 0;
}