Pagini recente » Cod sursa (job #1076164) | Cod sursa (job #1262084) | Cod sursa (job #233933) | Cod sursa (job #1494350) | Cod sursa (job #102124)
Cod sursa(job #102124)
#include <stdio.h>
#include <string.h>
char s[10000003], a[50003][22], cuv[22];
long nr, contor;
void citire()
{
freopen("abc2.in","r",stdin);
freopen("abc2.out","w",stdout);
fgets(s,10000003,stdin);
s[strlen(s)-1]=NULL;
fgets(a[1],22,stdin);
long n=strlen(a[1]);
a[1][n-1]=NULL;
nr=1;
while (!feof(stdin))
{
fgets(a[++nr],22,stdin);
a[nr][n-1]=NULL;
}
nr--;
}
void sort()
{
long 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 ()
{
long 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();
long i, n, m;
m=strlen(a[1]);
n=strlen(s);
for (i=0; i<m; i++)
cuv[i]=s[i];
if (caut()) contor++;
for (i=m; i<n; i++)
{
strcpy(cuv,cuv+1);
cuv[m-1]=s[i];
if (caut()) contor++;
}
printf("%ld\n",contor);
return 0;
}