Cod sursa(job #99770)

Utilizator hadesgamesTache Alexandru hadesgames Data 11 noiembrie 2007 16:13:10
Problema Abc2 Scor 0
Compilator cpp Status done
Runda Happy Coding 2007 Marime 0.83 kb
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
char s[10000002];
char a[50000][21];
int n,m;
int compar(const void *a,const void *b)
{
	char *aa=(char*)a,*bb=(char*)b;
	return strcmp(aa,bb);
}
int cauta(char* x)
{
	int p=0,u=n-1,m;
	while(p<u){
		m=(p+u)/2;
		if(strcmp(x,a[m])<=0)
			u=m;
		else
			p=m+1;
	}
	if(strcmp(a[p],x)==0)
		return 1;
	return 0;
}
int main()
{
	int t=0;
	FILE *in,*out;
	char aux[21];
	in=fopen("abc2.in","r");
	out=fopen("abc2.out","w");
	fscanf(in,"%s\n",s);
	while (fscanf(in,"%s\n",a[n++])!=EOF);
	fclose(in);
	m=strlen(a[0]);
	qsort(a,n,sizeof(a[0]),compar);
	for(char*p=s;*(p+m-1);++p)
	{
		strncpy(aux,p,m);
		aux[m]=0;
		//puts(aux);
		t+=cauta(aux);
	}
	fprintf(out,"%d\n",t);
	/*
	for (i=0;i<=n;i++)
		fputs(a[i],out);*/
	fclose(out);
	return 0;
}