Cod sursa(job #364818)
Utilizator | Data | 16 noiembrie 2009 23:47:06 | |
---|---|---|---|
Problema | A+B | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 2.05 kb |
#include<stdio.h>
#include<string.h>
int t,ok;
long n,m,i,k;
char s1[1000000],s2[1000000],c;
int main()
{
freopen("1006.in","r",stdin);
freopen("1006.out","w",stdout);
scanf("%d", &t);
for(i=1;i<=t;i++);
{
scanf("%s", &s1);
scanf("%s", &s2);
n=strlen(s1);
m=strlen(s2);
ok=0;
k=0;
if(n>=m) {
while(ok==0 && k<=n-m)
{
if(strncmp(s1+k,s2,m)==0)
ok=1; //cuvantul s2 se afla in interioru celuilalt
k++;
}
if(ok==1){
printf("%ld\n",n);
}
}
else {
while(ok==0 && k<=m-n)
{
if(strncmp(s1,s2+k,n)==0)
ok=1; //cuvantul s1 se afla in interioru celuilalt
k++;
}
if(ok==1){
printf("%ld\n",m);
}
}
k=1;
if(n>=m)
{
while(ok==0 && k<=m-1)
{
if( strncmp(s1+(n-m+k),s2,m-k) ==0)
ok=1;
else if( strncmp(s1,s2+k,m-k) ==0)
ok=1;
k++;
}
if(ok==1) printf("%ld\n", n+k-1);
}
else
{
while(ok==0 && k<=n-1)
{
if( strncmp(s2+(m-n+k),s1,n-k) ==0)
ok=1;
else if( strncmp(s2,s1+k,n-k) ==0)
ok=1;
k++;
}
if(ok==1) printf("%ld\n", m+k-1);
}
if(ok==0) printf("%ld\n", n+m);
}
return 0;
}