Pagini recente » Cod sursa (job #2088125) | Cod sursa (job #1262484) | Cod sursa (job #2463058) | Cod sursa (job #3275321) | Cod sursa (job #920502)
Cod sursa(job #920502)
#include<fstream>
#include<string.h>
#define DIM 2000010
using namespace std;
ifstream f("strmatch.in");
ofstream g("strmatch.out");
int n,i,m,d[DIM],pi[DIM],k,v[DIM],t;
char s[DIM],p[DIM];
int main ()
{
f>>(p+1);
f>>(s+1);
n=strlen(p+1);
for(i=2;p[i];i++)
{
while(p[i]!=p[k+1]&&k)
k=pi[k];
if(p[i]==p[k+1]) ++k;
pi[i]=k;
}
k=0;
for(i=1;s[i];++i)
{
while(s[i]!=p[k+1]&&k)
k=pi[k];
if(s[i]==p[k+1]) ++k;
d[i]=k;
if(k==n)
v[++t]=i-n;
}
g<<t<<"\n";
for(i=1;i<=1000&&i<=t;++i)
g<<v[i]<<" ";
return 0;
}