Pagini recente » Cod sursa (job #2792166) | Cod sursa (job #2281451) | Cod sursa (job #1043550) | Cod sursa (job #2954947) | Cod sursa (job #99149)
Cod sursa(job #99149)
#include <stdio.h>
#include <string.h>
char s[10000000], a[50000][21], cuv[21];
int nr, contor;
void citire()
{
freopen("abc2.in","r",stdin);
freopen("abc2.out","w",stdout);
fgets(s,10000000,stdin);
s[strlen(s)-1]=NULL;
fgets(a[1],20,stdin);
int n=strlen(a[1]);
a[1][n-1]=NULL;
nr=1;
while (!feof(stdin))
{
fgets(a[++nr],20,stdin);
a[nr][n-1]=NULL;
}
nr--;
}
void sort()
{
int ok=1, i;
char aux[20];
while (ok)
{
ok=0;
for (i=1; i<nr; i++)
if (strcmp(a[i],a[i+1])>0)
{
strcpy(aux,a[i]);
strcpy(a[i],a[i+1]);
strcpy(a[i+1],aux);
ok=1;
}
}
}
int caut ()
{
int p, u, m;
p=1; u=nr;
m=(p+u)/2;
while (p<=u)
{
if (strcmp(cuv,a[m])==0) return 1;
else if (strcmp(cuv,a[m])>0) {p=m+1, m=(p+u)/2;}
else {u=m-1; m=(p+u)/2;}
}
return 0;
}
int main()
{
citire();
sort();
int i, j, n, m;
m=strlen(a[1]);
n=strlen(s);
for (i=0; i<=n-m; i++)
{ for (j=i; j<i+m; j++)
cuv[j-i]=s[j];
if (caut()) contor++;
}
printf("%d\n",contor);
return 0;
}