[ create a new paste ] login | about

Link: http://codepad.org/SLlkwDJR    [ raw code | fork ]

C++, pasted on Jul 15:
//By momo
#include<cstdio>
#include<algorithm>
using namespace std;
int p[10100], t, q;
char a[10100], b[10100];
int main(){
	scanf( "%d", &t );
	while( t-- ){
		scanf( "%s%d", a, &q );
		int L = strlen(a);
		while( q-- ){
			scanf( "%s", b );
			int l = strlen(b), cnt = 0, k = p[0] = -1;
			for( int i = 1 ; i < l ; i++ ){
				while( k >= 0 && b[k+1] != b[i] ) k = p[k];
				if( b[k+1] == b[i] ) k++;
				p[i] = k;
				if( k < l-1 && i < l-1 && b[k+1] == b[i+1] ) p[i] = p[k];
			}
			k = -1;
			for( int i = 0 ; i < L ; i++ ){
				while( k >= 0 && b[k+1] != a[i] ) k = p[k];
				if( b[k+1] == a[i] ) k++;
				if( k == l-1 ){ cnt++; k = p[k]; }
			}
			printf( "%d\n", cnt );
		}
	}
}


Output:
No errors or program output.


Create a new paste based on this one


Comments: