Pagini recente » Cod sursa (job #2430546) | Cod sursa (job #1145968) | Cod sursa (job #121565) | Cod sursa (job #1856307) | Cod sursa (job #1154818)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("virus.in");
ofstream g("virus.out");
char s[100005],c[1005];
int l,q,l2,p[1005];
void Match()
{ int i,k,sol=0;
k=0;
for(i=2;i<=l2;i++)
{while (k && c[k+1]!=c[i])
k=p[k];
if (c[k+1]==c[i]) k++;
p[i]=k;
}
k=0;
for(i=1;i<=l;i++)
{
while (k && c[k+1]!=s[i])
k=p[k];
if (c[k+1]==s[i]) k++;
if (k==l2) sol++;
}
g<<sol<<"\n";
}
int main()
{ int i;
f>>l>>q; f.getline(s,2);
f>>(s+1); s[0]=' ';
for(i=1;i<=q;i++)
{ f>>l2; f.getline(c,2);
f>>(c+1); c[0]=' ';
Match();
}
return 0;
}