Pagini recente » Cod sursa (job #1051389) | Cod sursa (job #1067636) | Cod sursa (job #2270766) | Cod sursa (job #2760140) | Cod sursa (job #100239)
Cod sursa(job #100239)
#include<stdio.h>
#include<string.h>
#define maxl 1024*1024*10
#define maxn 1024*1024*2
char text[maxl];
long nod[maxn][3], n ,last = 1;
long test(long start)
{
long poz = 1,cat = 1;
while( poz && cat <= n )
{
poz = nod[poz][text[start+cat-1]-'a'];
cat++;
}
if( cat > n ) return 1;
return 0;
}
void baga(char *sir,long poz,long h)
{
if( h > n) return;
if( nod[poz][ sir[0]-'a' ] != 0 )
{
baga( sir + 1, nod[poz][sir[0] -'a'], h+1 );
return ;
}
for ( long i = h; i <= n; ++i)
{
nod[poz][ sir[i-h]-'a' ] = ++last;
poz = last;
}
}
int main()
{
freopen("abc2.in","r",stdin);
freopen("abc2.out","w",stdout);
char sir[32];
scanf("%s",text);
long ok = 0;
while( scanf("%s",sir) == 1)
{
if( !ok)
n = strlen(sir);
baga(sir,1,1);
ok = 1;
}
long x = strlen(text) - x;
long rez = 0;
for( long i = 0; i <= x; ++i)
{
rez+= test(i);
}
printf("%ld\n",rez);
return 0 ;
}