Pagini recente » Cod sursa (job #97408) | Cod sursa (job #801088) | Cod sursa (job #2713572) | Cod sursa (job #334991) | Cod sursa (job #3217251)
#include <fstream>
#include <vector>
#include <algorithm>
#include <cstring>
#include <unordered_map>
using namespace std;
ifstream fin ("abc2.in");
ofstream fout("abc2.out");
int n,j,sol,i,lps[21];
unordered_map <string,bool> M;
string text,pattern;
int main()
{
fin>>text;
while(fin>>pattern)
{
if(M[pattern])
continue;
M[pattern]=1;
j=0;
memset(lps,0,sizeof(lps));
for(i=1;i<pattern.size();i++)
{
while(pattern[j]!=pattern[i]&&j>0)
j=lps[j-1];
if(pattern[j]==pattern[i])
j++;
lps[i]=j;
}
j=0;
for(i=0;i<text.size();i++)
{
while(text[i]!=pattern[j]&&j>0)
j=lps[j-1];
if(pattern[j]==text[i])
j++;
if(j==pattern.size())
sol++;
}
}
fout<<sol;
return 0;
}