Pagini recente » Cod sursa (job #1322508) | Cod sursa (job #1026339) | Cod sursa (job #200131) | Cod sursa (job #1484438) | Cod sursa (job #492710)
Cod sursa(job #492710)
#include <stdio.h>
#include <bitset>
#include <string>
using namespace std;
#define maxn 10000010
#define maxl 1000001
int n, i, j, ok, sol, x, nc, nn, lg;
char s[maxn];
char c[25];
struct trie
{
int f[3];
int t;
} v[maxl];
int main()
{
freopen("abc2.in", "r", stdin);
freopen("abc2.out", "w", stdout);
gets(s+1);
nc=nn=1;
while(gets(c+1))
{
lg=1;
nc=1;
while(c[lg]>0)
{
x=c[lg]-'a';
if(v[nc].f[x]==0)
{
++nn;
v[nc].f[x]=nn;
}
nc=v[nc].f[x];
++lg;
}
}
lg--;
for(int i=1; s[i+lg-1]!=0; ++i)
{
ok=nc=1;
for(int j=1; j<=lg; ++j)
{
if(v[nc].f[s[i+j-1]-'a']==0)
{
ok=0;
break;
}
nc=v[nc].f[s[i+j-1]-'a'];
}
sol+=ok;
}
printf("%d\n", sol);
return 0;
}