Pagini recente » Cod sursa (job #2135710) | Cod sursa (job #377655) | Cod sursa (job #2769191) | Cod sursa (job #483105) | Cod sursa (job #864135)
Cod sursa(job #864135)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("strmatch.in");
ofstream g("strmatch.out");
int n,m,k,p,v,sol[1002],pi[2000002],i;
char a[2000002],b[2000002];
int main ()
{
f.get(a,2000002);
f.get();
f.get(b,2000002);
for (n=0;a[n];n++);
for (m=0;b[m];m++);
a[n]=0;
b[m]=0;
n--;
m--;
for (i=2;i<=m;i++)
{
while (k>0 && a[k+1]!=b[i])
k=pi[k];
if (a[k+1]==b[i])
k++;
pi[i]=k;
if (k==n)
{
p++;
sol[p]=i-n;
if (p>1000)
break;
}
}
g<<p<<'\n';
for (i=1;i<=p;i++)
g<<sol[i]<<" ";
}