Cod sursa(job #99616)

Utilizator a7893Nae Mihai a7893 Data 11 noiembrie 2007 13:28:53
Problema Abc2 Scor 0
Compilator cpp Status done
Runda Happy Coding 2007 Marime 0.93 kb
#include<stdio.h>
#include<string.h>
#define N 10000000
char d[N],s[N],a[50000][20];
int poz[3][N],k,lg,l,nr;
int gasit(char s[])
{
	int i;
	for(i=0;i<k;i++)
		if(strcmp(a[i],s)==0)
			return 1;
	return 0;
}
int search(int st,char s[])
{
	int i;
	if(s[l-1]!=d[st+l-1])
		return 0;
	for(i=0;i<l;i++)
		if(s[i]!=d[st+i])
			return 0;
	return 1;
}
void read()
{
	scanf("%s",&d);
	while(scanf("%s",&s)!=EOF)
		if(!gasit(s))
			strcpy(a[k++],s);
	lg=strlen(d);
	l=strlen(s);
}
void solve()
{
	int i,q;
	for(i=0;i<lg;i++)
		poz[d[i]-'a'][++poz[d[i]-'a'][0]]=i;
	/*for(i=0;i<3;i++){
		for(j=1;j<=poz[i][0];j++)
			printf("%d ",poz[i][j]+1);
		printf("\n");
	}*/
	for(i=0;i<k;i++)
		for(q=1;q<=poz[a[i][0]-'a'][0];q++)
			if(search(poz[a[i][0]-'a'][q],a[i]))
					nr++;
	printf("%d\n",nr);
}
int main()
{
	freopen("abc2.in","r",stdin);
	freopen("abc2.out","w",stdout);
	read();
	solve();
	return 0;
}