Cod sursa(job #673094)

Utilizator adrian_dmTest 123456789 adrian_dm Data 3 februarie 2012 20:44:00
Problema Cel mai lung subsir comun Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.6 kb
#include<fstream>
#define max(a, b) ((a > b) ? a : b)

using namespace std;

int main(){
int m,n,i,j,lungime=0;
int a[1024],b[1024],sir[1024],c[1024][1024];
ifstream f("cmlsc.in");
f>>m;
f>>n;
for(i=1;i<m;i++)
f>>a[i];
for(i=1;i<n;i++)
f>>b[i];
f.close();
for(i=1;i<m;i++)
for(j=1;j<n;j++)
if(a[i]==b[j])
c[i][j]=c[i-1][j-1]+1;
else
c[i][j]=max(c[i][j-1],c[i-1][j]);
for(i=m;j=n;i)
if(a[i]==b[j]){
sir[++lungime]=a[i];
--i;
--j;
}
else if(c[i-1][j]<c[i][j-1])
--j;
else
--i;
ofstream g("cmlscout");
g<<lungime;
for(i=lungime;i!=0;i--)
g<<sir[i];
g.close();
return 0;
}