Pagini recente » Cod sursa (job #3209656) | Cod sursa (job #3188701) | Cod sursa (job #3142719) | Cod sursa (job #1365303) | Cod sursa (job #3284528)
#include <fstream>
#define mod 666013
using namespace std;
ifstream cin("subsir.in");
ofstream cout("subsir.out");
int v1[501];
int v2[501];
unsigned int d[501][501][2];
int main()
{
char ch='a';
int ok=0,n=0,m=0,i,j;
while(cin.get(ch))
{
if(ch=='\n')
ok++;
else
{
if(ok==0)
{
n++;
v1[n]=ch-'a'+1;
}
else
{
m++;
v2[m]=ch-'a'+1;
}
}
}
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
{
if(v1[i]==v2[j])
{
d[i][j][1]=d[i-1][j-1][1]+1;
d[i][j][0]=max(d[i-1][j-1][0],(unsigned int) 1);
}
else
{
if(d[i][j-1][1]>d[i-1][j][1])
{
d[i][j][1]=d[i][j-1][1];
d[i][j][0]=d[i][j-1][0];
}
if(d[i-1][j][1]>d[i][j-1][1])
{
d[i][j][1]=d[i-1][j][1];
d[i][j][0]=d[i-1][j][0];
}
if(d[i][j-1][1]==d[i-1][j][1])
{
d[i][j][1]=d[i][j-1][1];
d[i][j][0]=d[i][j-1][0]+d[i-1][j][0];
if(d[i-1][j-1][1]==d[i-1][j][1])
d[i][j][0]-=(d[i-1][j-1][0]-mod);
}
}
d[i][j][0]%=mod;
}
cout<<d[n][m][0];
return 0;
}