Cod sursa(job #109092)

Utilizator beluadas afsaq belu Data 24 noiembrie 2007 18:14:40
Problema Abc2 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#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;
}