Pagini recente » Cod sursa (job #721237) | Cod sursa (job #1688263) | Cod sursa (job #1290536) | Cod sursa (job #1126547) | Cod sursa (job #2556091)
#include <bits/stdc++.h>
#define NM 2000002
using namespace std;
ifstream f("strmatch.in");
ofstream g("strmatch.out");
int n,m,l,i,j;
int nr[1002],urm[NM];
string p,t;
int main()
{
f>>p>>t;
n=p.size(); m=t.size();
urm[0]=0; j=0;
for(i=1;i<n;i++){
while(j>0&&p[i]!=p[j])
j=urm[j-1];
if(p[j]==p[i])
j++;
urm[i]=j;
}
j=0; l=0;
for(i=0;i<m;i++){
while(j>0&&p[j]!=t[i])
j=urm[j-1];
if(p[j]==t[i])
j++;
if(j==n&&l<1000)
nr[++l]=i-n+1;
}
g<<l<<'\n';
for(i=1;i<=l;i++)
g<<nr[i]<<' ';
return 0;
}