Cod sursa(job #1601679)

Utilizator AsttridMocanu Ada Astrid Asttrid Data 16 februarie 2016 10:18:33
Problema Cel mai lung subsir comun Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.68 kb
#include<fstream>
#include<iostream>
using namespace std;
ifstream f("cmlsc.in");
ofstream g("cmlsc.out");
int n,m,i,j,v[2000],a[2000],l,k[2000][2000],st[2000],p;

void citire(){
    f>>n>>m;
for(i=1;i<=n;i++)
   f>>v[i];
for(i=1;i<=m;i++)
    f>>a[i];

}
int maxx(int a,int b){
if(a>b)return a;
else return b;}

int main(){
citire();
for(i=1;i<=n;i++)
    for(j=1;j<=m;j++)
   if(v[i]==a[j]){
       k[i][j]=k[i-1][j-1]+1;}
else k[i][j]=maxx(k[i][j-1],k[i-1][j]);

for(i=n,j=m;i;)
if(a[j]==v[i]){st[++p]=a[j];i--;j--;}
else if(k[i-1][j]<k[i][j-1])
    j--;
else i--;


g<<p<<"\n";
for(i=p;i;i--)
    g<<st[i]<<" ";


f.close();
g.close();
return 0;}