Mai intai trebuie sa te autentifici.
Cod sursa(job #102085)
Utilizator | Data | 13 noiembrie 2007 23:43:38 | |
---|---|---|---|
Problema | Abc2 | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Happy Coding 2007 | Marime | 1.05 kb |
#include <cstdio>
#include <cstring>
struct elem {
int nx[3];
int& operator[] ( char x ) { return nx[x-'a']; };
};
const int SM = 10000000;
const int CM = 20;
const int EM = 1000000;
char s[SM+1];
int v[EM+1][3];
int main() {
freopen("abc2.in","rt",stdin);
freopen("abc2.out","wt",stdout);
fgets(s,SM+1,stdin);
int nv = 0, cur = 0, cuvlen = 0,i,j;
char cuv[CM+1];
if (!feof(stdin)) {
scanf("%s\n",cuv);
cuvlen = strlen(cuv);
cur = 0;
for (i = 0; i < cuvlen; ++i) {
j = cuv[i] - 'a';
if (v[cur][j] == 0) v[cur][j] = ++nv;
cur = v[cur][j];
}
}
while (!feof(stdin)) {
scanf("%s\n",cuv);
cur = 0;
for (i = 0; i < cuvlen; ++i) {
j = cuv[i] - 'a';
if (v[cur][j] == 0) v[cur][j] = ++nv;
cur = v[cur][j];
}
}
int r = 0;
int nj, k;
for (i = 0; s[i+cuvlen] != '\n'; ++i) {
cur = 0; nj = i+cuvlen;
for (j = i; j<nj; ++j) {
k = s[j] - 'a';
if (v[cur][k]) {
cur = v[cur][k];
} else {
--r;
break;
}
}
++r;
}
printf("%d\n",r);
return 0;
}