Pagini recente » Cod sursa (job #2293150) | Cod sursa (job #707555) | Cod sursa (job #1274913) | Cod sursa (job #652000) | Cod sursa (job #2857667)
#include <fstream>
#include <string>
using namespace std;
ifstream cin ("strmatch.in");
ofstream cout ("strmatch.out");
int rasp[4000005];
int main()
{
int n,i,j,k,cate=0,cnt=0;
string a,b;
char d,c;
cin>>a>>b;
int val=a.size();
a='$'+a;
a=a+'&';
a=a+b;
for(i=2;i<a.size();i++)
{
k=rasp[i-1];
c=a[i];
d=a[k+1];
while(a[i]!=a[k+1] && k>=1)
{
k=rasp[k];
}
if(a[i]==a[k+1])
{
rasp[i]=k+1;
}
else
{
rasp[i]=0;
}
if(rasp[i]==val)
{
cate++;
}
}
cout<<cate<<'\n';
cnt=0;
for(i=1;i<a.size();i++)
{
if(rasp[i]==val)
{
cout<<i-val+1-val-2<<" ";
cnt++;
if(cnt==1000)
{
break;
}
}
}
return 0;
}