Pagini recente » Cod sursa (job #474593) | Cod sursa (job #3236840) | Cod sursa (job #2091190)
#include <iostream>
#include <string.h>
#include <fstream>
using namespace std;
ifstream fin("strmatch.in");
ofstream fout("strmatch.out");
#define lim 2000010
char text[lim],pattern[lim];
int pf[lim];
void prefix_function()
{
int k=1;
while (k != sizeof(pattern+1))
{
pf[k] = pf[k-1];
while (k && pattern[k]!=pattern[pf[k]+1]) k = pf[k];
if (pattern[k+1]==pattern[pf[k]+1]) pf[k]++;
k++;
}
}
int main()
{
fin>>(pattern+1)>>(text+1);
prefix_function ();
for (int i=1; i!=sizeof (pattern+1); i++) fout<<pf[i]<<' ';
return 0;
}