Pagini recente » Cod sursa (job #1027492) | Cod sursa (job #1329053) | Cod sursa (job #1542195) | Cod sursa (job #2248684) | Cod sursa (job #99770)
Cod sursa(job #99770)
#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;
}