Pagini recente » Cod sursa (job #2732514) | Cod sursa (job #358772) | Cod sursa (job #2600363) | Cod sursa (job #1128856) | Cod sursa (job #1886970)
#include <bits/stdc++.h>
#define NMAX 1005
#define CMAX 3005
using namespace std;
ifstream fin("carte.in");
ofstream fout("carte.out");
int M[CMAX][NMAX],P[CMAX];
string S,D;
void kmp(){
int q = 0;
for(int i = 2; i < D.size(); i++){
while(q && D[q + 1] != D[i])
q = P[q];
if(D[q + 1] == D[i])
q++;
P[i] = q;
}
}
int main()
{
ios :: sync_with_stdio(false);
int T,n;
fin >> T;
while(T--){
fin >> S >> n;
S = '$' + S;
for(int j = 1; j <= n; j++){
fin >> D;
D = '$' + D;
kmp();
int q = 0,m = D.size() - 1;
for(int i = 1; i < S.size(); i++){
while(q && S[i] == D[q + 1])
q = P[q];
if(S[i] == D[q + 1])
q++;
if(q == m)
M[i][j] = 1;
}
}
for(int i = 1; i < S.size(); i++){
for(int j = 1; j <= n; j++)
fout << M[i][j] << " ";
fout << "\n";
}
}
return 0;
}