Cod sursa(job #1358226)

Utilizator PlatonVPlaton Vlad PlatonV Data 24 februarie 2015 14:35:09
Problema Cel mai lung subsir comun Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include <stdio.h>
#include <algorithm>

#define maxn 100000

int n, m, x[maxn], y[maxn], lcs[maxn][maxn];

int main()
{
    freopen("cmlsc.in", "r", stdin);

    scanf("%d%d", &n, &m);

    for (int i = 0; i < n; i++) {
       scanf("%d", &x[i]); 
    } 

    for (int i = 0; i < m; i++) {
       scanf("%d", &y[i]); 
    } 

    for (int i = 1; i < n; i++) {
        for (int j = 1; j < m; j++) {
           if (x[i] == y[j])
           {
               lcs[i][j] = 1 + lcs[i-1][j-1];
           } 
           else
           {
               lcs[i][j] = std::max(lcs[i-1][j], lcs[i][j-1]);
           }
        }
    }

    printf("%d", lcs[n][m]);

    fclose(stdin);

    return 0;
}