Cod sursa(job #250720)

Utilizator anna_bozianuBozianu Ana anna_bozianu Data 31 ianuarie 2009 17:26:19
Problema Abc2 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.07 kb
#include<stdio.h>
#include<string.h>
struct nod{unsigned inf;nod *urm;};
nod *p[500009],*paux;
char text[10000010],cuv[30],*c1,*c2;
unsigned LT,LC,p3[20],i,rv,P,RV(char *CUV),hv,h=500009,sol,ok();
int cit;
void readd();
int main()
{
	readd();
	return 0;
}
void readd()
{
	freopen("abc2.in","r",stdin);
	freopen("abc2.out","w",stdout);
	scanf("%s",text);
	cit=scanf("%s",cuv);LC=strlen(cuv);
	p3[0]=1;for(i=1;i<20;i++)p3[i]=p3[i-1]*3;P=p3[LC-1];
	while(cit!=EOF)
	{
		for(i=0;i<LC;i++)rv+=p3[i]*(unsigned)(cuv[i]-'a');
		hv=rv%h;
		for(paux=p[hv];paux;paux=paux->urm)if(rv==paux->inf)break;
		if(!paux){paux=new nod;paux->inf=rv;paux->urm=p[hv];p[hv]=paux;}
		cit=scanf("%s",cuv);
	}
	c1=text;c2=&c1[LC];rv=RV(c1);sol+=ok();//LT trebuie modificat
	for(;*c2;)
	{
		rv-=(unsigned)(c1[0]-'a');
		rv/=3;
		rv+=P*(unsigned)(c2[0]-'a');
		sol+=ok();
		c1++;c2++;
	}
	printf("%u",sol);
}
unsigned RV(char *CUV)
{   unsigned ret=0;
	
	return ret;
}
unsigned ok()
{
	hv=rv%h;
	for(paux=p[hv];paux;paux=paux->urm)if(rv==paux->inf)return 1;
	return 0;
}