Cod sursa(job #101359)

Utilizator tvladTataranu Vlad tvlad Data 13 noiembrie 2007 13:46:57
Problema Abc2 Scor 0
Compilator cpp Status done
Runda Happy Coding 2007 Marime 0.84 kb
#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;
}