Pagini recente » Cod sursa (job #2610230) | Cod sursa (job #2063018) | Cod sursa (job #1658569) | Cod sursa (job #1552542) | Cod sursa (job #2339701)
#include <fstream>
#include <cstring>
using namespace std;
ifstream f("strmatch.in");
ofstream g("strmatch.out");
char s[2000010],t[2000010];
int l,p[10000],v[1000],ap,i,n,m;
int main()
{
f>>s+1;
f>>t+1;
n=strlen(s+1);
m=strlen(t+1);
p[1]=0;
l=0;
for(i=2; i<=n; i++)
{
while(l!=0&&s[i]!=s[l+1])
l=p[l];
if(s[i]==s[l+1])
l++;
p[i]=l;
}
l=0;
for(i=1; i<=m; i++)
{
while(l!=0&&t[i]!=s[l+1])
l=p[l];
if(t[i]==s[l+1])
l++;
if(n==l)
{
ap++;
if(ap<=1000)
v[ap]=i-n;
l=p[l];
}
}
g<<ap<<'\n';
for(i=1; i<=ap && i <= 1000; i++)
g<<v[i]<<" ";
return 0;
}