Mai intai trebuie sa te autentifici.

Cod sursa(job #102085)

Utilizator tvladTataranu Vlad tvlad 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;
}