Pagini recente » Cod sursa (job #1178767) | Cod sursa (job #529319) | Cod sursa (job #2590025) | Cod sursa (job #2302802) | Cod sursa (job #101359)
Cod sursa(job #101359)
#include <cstdio>
struct elem {
int nx[3];
bool fin;
int& operator[] ( char x ) { return nx[x-'a']; };
};
const int SM = 10000000;
const int CM = 20;
const int EM = 1000000;
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 root = 0, cur = 0;
while (!feof(stdin)) {
scanf("%s\n",cuv);
cur = root;
for (int i = 0; cuv[i] != '\0' && !v[cur].fin; ++i) {
if (v[cur][cuv[i]] == NULL) v[cur][cuv[i]] = ++nv;
cur = v[cur][cuv[i]];
}
v[cur].fin = true;
}
int r = 0;
for (int i = 0; s[i] != '\n'; ++i) {
cur = root;
for (int j = i; s[j] != '\n' && v[cur][s[j]]; ++j) {
cur = v[cur][s[j]];
if (v[cur].fin) {
++r;
break;
}
}
}
printf("%d\n",r);
return 0;
}