Cod sursa(job #804667)

Utilizator un_nenorocitChelcioiu Daniel un_nenorocit Data 30 octombrie 2012 01:11:58
Problema Cel mai lung subsir comun Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.04 kb
# include <stdio.h>
# include <algorithm>
int matrix[1024][1024];
 FILE *f, *g;

 void clsc (int n, int m, int *x, int *y) {
      int i, j;
      for (i = 0; i < n; i++) {
          for (j = 0; j < m; j++) {
              if (x[i] == y[j]) {
                 matrix[i+1][j+1] = matrix[i][j] + 1;
                 }
                  else {
                     matrix[i+1][j+1] = std::max(matrix[i+1][j], matrix[i][j+1]);  
                       }
          } 
          }
              fprintf(g,"%d\n", matrix[n][m]);
              for ( i = 1; i <= n; i++) {
                  if( matrix[i][m] != matrix[i-1][m]){
                      fprintf(g, "%d ", y[i-1]);
                      }
                  } 
  }

int main () {
   
    f = fopen("cmlsc.in", "r");
    g = fopen("cmlsc.out", "w");
    int n, m, i;
    fscanf(f, "%d %d", &n, &m);
    int x[n], y[m];
    for (i = 0; i < n; i++)
        fscanf(f, "%d", x+i);
    for (i = 0; i < m; i++)
        fscanf(f, "%d", y+i);
        clsc(n, m, x, y);
    return 0;
}