Pagini recente » Cod sursa (job #795420) | Cod sursa (job #2771724) | Cod sursa (job #2919857) | Cod sursa (job #3141243) | Cod sursa (job #2857661)
#include <fstream>
#include <string>
using namespace std;
ifstream cin ("strmatch.in");
ofstream cout ("strmatch.out");
int rasp[2000005];
int main()
{
int n,i,j,k;
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;
}
}
int cnt=0;
for(i=1;i<min(1001+val,(int)a.size());i++)
{
if(rasp[i]==val)
{
cnt++;
}
}
cout<<cnt<<'\n';
for(i=1;i<min(1001+val-1+val+2,(int)a.size());i++)
{
if(rasp[i]==val)
{
cout<<i-val+1-val-2<<" ";
}
}
return 0;
}