#include<stdio.h>
#include<stdlib.h>
#include<string.h>
char str1[100],str2[100];
int len1;
int len2;
void printLCS(char b[len1][len2],char str1[],int i,int j)
{
if(i==0 || j==0)
return;
if(b[i][j]=='c')
{
printLCS(b,str1,i-1,j-1);
}
else if(b[i][j]=='l')
printLCS(b,str1,i,j-1);
else
printLCS(b,str1,i-1,j);
}
void Seq(char str1[],char str2[])
{
int i,j;
int LCS[len1+1][len2+1];
char b[len1][len2];
for(i=0;i<=len1;i++)
{
LCS[i][0]=0;
}
for(j=0;j<=len2;j++)
{
LCS[0][j]=0;
}
for(i=1;i<=len1;i++)
{
for(j=1;j<=len2;j++)
{
if(str1[i-1]==str2[j-1])
{
LCS[i][j]=1+LCS[i-1][j-1];
b[i][j]='c';
}
else if(LCS[i-1][j]>=LCS[i][j-1])
{
LCS[i][j]=LCS[i-1][j];
b[i][j]='u';
}
else
{
LCS[i][j]=LCS[i][j-1];
b[i][j]='l';
}
}
}
printLCS(b,str1,len1,len2);
}
int main(int argc,char *argv[])
{
if(argc!=2)
{
printf("Invalid Number of Arguments:\n"); }
FILE *fp;
if(fp==NULL)
{
printf("File can't be opened:\n"); }
char c;
while(c!=EOF)
{
int k=0;
if(c=='\n')
while(c!=';')
{
str1[k]=c;
k++;
}
str1[k]='\0';
k=0;
while(c!=EOF && c!='\n')
{
str2[k]=c;
k++;
}
str2[k]='\0';
Seq(str1,str2);
if(c==EOF)
{
break;
}
else
}
return 0;
}
I2luY2x1ZGU8c3RkaW8uaD4KI2luY2x1ZGU8c3RkbGliLmg+CiNpbmNsdWRlPHN0cmluZy5oPgpjaGFyIHN0cjFbMTAwXSxzdHIyWzEwMF07CmludCBsZW4xOwppbnQgbGVuMjsKdm9pZCBwcmludExDUyhjaGFyIGJbbGVuMV1bbGVuMl0sY2hhciBzdHIxW10saW50IGksaW50IGopCnsKICAgIGlmKGk9PTAgfHwgaj09MCkKICAgIHJldHVybjsKICAgIGlmKGJbaV1bal09PSdjJykKICAgIHsKICAgICAgICBwcmludExDUyhiLHN0cjEsaS0xLGotMSk7CiAgICAgICAgcHJpbnRmKCIlYyIsc3RyMVtpLTFdKTsKICAgIH0KICAgIGVsc2UgaWYoYltpXVtqXT09J2wnKQogICAgcHJpbnRMQ1MoYixzdHIxLGksai0xKTsKICAgIGVsc2UKICAgIHByaW50TENTKGIsc3RyMSxpLTEsaik7Cn0Kdm9pZCBTZXEoY2hhciBzdHIxW10sY2hhciBzdHIyW10pCnsKCiAgICBpbnQgaSxqOwogICAgbGVuMT1zdHJsZW4oc3RyMSk7CiAgICBsZW4yPXN0cmxlbihzdHIyKTsKICAgIGludCBMQ1NbbGVuMSsxXVtsZW4yKzFdOwogICAgY2hhciBiW2xlbjFdW2xlbjJdOwogICAgZm9yKGk9MDtpPD1sZW4xO2krKykKICAgIHsKICAgICAgICBMQ1NbaV1bMF09MDsKICAgIH0KICAgIGZvcihqPTA7ajw9bGVuMjtqKyspCiAgICB7CiAgICAgICAgTENTWzBdW2pdPTA7CiAgICB9CiAgICBmb3IoaT0xO2k8PWxlbjE7aSsrKQogICAgewogICAgICAgIGZvcihqPTE7ajw9bGVuMjtqKyspCiAgICAgICAgewogICAgICAgICAgICBpZihzdHIxW2ktMV09PXN0cjJbai0xXSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTENTW2ldW2pdPTErTENTW2ktMV1bai0xXTsKICAgICAgICAgICAgICAgIGJbaV1bal09J2MnOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYoTENTW2ktMV1bal0+PUxDU1tpXVtqLTFdKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBMQ1NbaV1bal09TENTW2ktMV1bal07CiAgICAgICAgICAgICAgICBiW2ldW2pdPSd1JzsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIExDU1tpXVtqXT1MQ1NbaV1bai0xXTsKICAgICAgICAgICAgICAgIGJbaV1bal09J2wnOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgcHJpbnRMQ1MoYixzdHIxLGxlbjEsbGVuMik7Cn0KaW50IG1haW4oaW50IGFyZ2MsY2hhciAqYXJndltdKQp7CiAgICBpZihhcmdjIT0yKQogICAgewogICAgICAgIHByaW50ZigiSW52YWxpZCBOdW1iZXIgb2YgQXJndW1lbnRzOlxuIik7CiAgICAgICAgZXhpdCgwKTsKICAgIH0KICAgIEZJTEUgKmZwOwogICAgZnA9Zm9wZW4oYXJndlsxXSwiciIpOwogICAgaWYoZnA9PU5VTEwpCiAgICB7CiAgICAgICAgcHJpbnRmKCJGaWxlIGNhbid0IGJlIG9wZW5lZDpcbiIpOwogICAgICAgIGV4aXQoMCk7CiAgICB9CiAgICBjaGFyIGM7CiAgICBjPWZnZXRjKGZwKTsKICAgIHdoaWxlKGMhPUVPRikKICAgIHsKICAgICAgICBpbnQgaz0wOwogICAgICAgIGlmKGM9PSdcbicpCiAgICAgICAgYz1mZ2V0YyhmcCk7CiAgICAgICAgd2hpbGUoYyE9JzsnKQogICAgICAgIHsKICAgICAgICAgICAgc3RyMVtrXT1jOwogICAgICAgICAgICBrKys7CiAgICAgICAgICAgIGM9ZmdldGMoZnApOwogICAgICAgIH0KICAgICAgICBzdHIxW2tdPSdcMCc7CiAgICAgICAgYz1mZ2V0YyhmcCk7CiAgICAgICAgaz0wOwogICAgICAgIHdoaWxlKGMhPUVPRiAmJiBjIT0nXG4nKQogICAgICAgIHsKICAgICAgICAgICAgc3RyMltrXT1jOwogICAgICAgICAgICBrKys7CiAgICAgICAgICAgIGM9ZmdldGMoZnApOwogICAgICAgIH0KICAgICAgICBzdHIyW2tdPSdcMCc7CiAgICAgICAgU2VxKHN0cjEsc3RyMik7CiAgICAgICAgcHJpbnRmKCJcbiIpOwogICAgICAgIGlmKGM9PUVPRikKICAgICAgICB7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgYz1mZ2V0YyhmcCk7CiAgICB9CiAgICByZXR1cm4gMDsKfQ==