Pagini recente » Cod sursa (job #3212232) | Cod sursa (job #2086288) | Cod sursa (job #2107129) | Cod sursa (job #2079662) | Cod sursa (job #102012)
Cod sursa(job #102012)
#include <cstdio>
#include <cstring>
struct elem {
int nx[3];
int& operator[] ( char x ) { return nx[x-'a']; };
};
const int SM = 1000;//0000;
const int CM = 20;
const int EM = 1000;//000;
char s[SM+1];
char cuv[CM+1];
int nv;
elem v[EM+1];
int main() {
freopen("abc2.in","rt",stdin);
freopen("abc2.out","wt",stdout);
fgets(s,SM+1,stdin);
nv = 0;
int cur = 0, cuvlen = 0;
if (!feof(stdin)) {
scanf("%s\n",cuv);
cuvlen = strlen(cuv);
cur = 0;
for (int i = 0; i < cuvlen; ++i) {
if (v[cur][cuv[i]] == 0) v[cur][cuv[i]] = ++nv;
cur = v[cur][cuv[i]];
}
}
while (!feof(stdin)) {
scanf("%s\n",cuv);
cur = 0;
for (int i = 0; i < cuvlen; ++i) {
if (v[cur][cuv[i]] == 0) v[cur][cuv[i]] = ++nv;
cur = v[cur][cuv[i]];
}
}
int r = 0;
int n = strlen(s);
for (int i = 0; i<n-cuvlen; ++i) {
cur = 0;
for (int j = i; j<i+cuvlen; ++j) {
if (v[cur][s[j]]) {
cur = v[cur][s[j]];
} else {
--r;
break;
}
}
++r;
}
printf("%d\n",r);
return 0;
}