Pagini recente » Cod sursa (job #1634902) | Cod sursa (job #1690472) | Cod sursa (job #902932) | Cod sursa (job #274248) | Cod sursa (job #109092)
Cod sursa(job #109092)
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
char a[10000002],b[30];
long sol=0,q;
int w;
FILE *f,*g;
struct trie
{
long urm[3];
}t[1000003];
void puneintrie(char *a)
{int i;
long p;
p=a[0]-'a';
for(i=0;i<w;i++)
{
if(!t[p].urm[a[i+1]-'a'])t[p].urm[a[i+1]-'a']=++q;
p=t[p].urm[a[i+1]-'a'];
}
}
void test(long x)
{long p;
int i;
p=a[x]-'a';
for(i=0;i<w;i++)
if(t[p].urm[a[i+x+1]-'a'])p=t[p].urm[a[i+x+1]-'a'];
else return;
sol++;
}
int main()
{long i;
f=fopen("abc2.in","r");
fscanf(f,"%s",&a);
fscanf(f,"%s",&b);
q=2;
w=strlen(b+1);
puneintrie(b);
while(!feof(f))
{
fscanf(f,"%s",&b);
puneintrie(b);
}
fclose(f);
for(i=0;a[i+w]!=NULL;i++)
test(i);
g=fopen("abc2.out","w");
fprintf(g,"%ld",sol);
fclose(g);
return 0;
}