Pagini recente » Cod sursa (job #1118408) | Cod sursa (job #2770332) | Cod sursa (job #1363041) | Cod sursa (job #2627355) | Cod sursa (job #2067797)
#include <iostream>
#include <fstream>
#include <string.h>
using namespace std;
char a[2000001],b[2000001];
int v[2000001],r[2000001];
int main()
{
ifstream f("strmatch.in");
ofstream g("strmatch.out");
f>>a>>b;
int n=strlen(a);
int m=strlen(b);
int p=0;
int i=0,j=-1;
v[i]=-1;
while(i<n)
{
while(j>0&&a[i]!=a[j])
j=v[j];
i++;j++;
v[i]=j;
}
j=0;i=0;
//for(int i=0;i<n;i++)
// cout<<v[i]<<" ";
while (i<m)
{
while (j>0&&b[i]!=a[j])
j=v[j];
i++;
j++;
if (j==n)
{
r[p]=i-n;
p++;
j=v[j];
}
}
g<<p<<endl;
if(p>1000)p=1000;
for(i=0;i<p;i++)
g<<r[i]<<" ";
return 0;
}