Pagini recente » Cod sursa (job #2387738) | Cod sursa (job #2949051) | Cod sursa (job #808330) | Cod sursa (job #894853) | Cod sursa (job #2261534)
#include <cstdio>
#include <cstring>
#include <cctype>
#include <vector>
using namespace std;
char v[2000001];
int pee[2000001];
vector <int> rez;
int main()
{
int i,n,z;
char c;
freopen("strmatch.in","r",stdin);
freopen("strmatch.out","w",stdout);
v[1]=getchar();
n=1;
while(isalpha(v[n]))
v[++n]=getchar();
--n;
z=0;
for(i=2; i<=n; i++)
{
while(z && v[z+1]!=v[i])
z=pee[z];
if(v[z+1]==v[i])
pee[i]=++z;
}
z=0;
c=getchar();
i=1;
while(isalpha(c))
{
while(z && v[z+1]!=c)
z=pee[z];
if(v[z+1]==c)
++z;
if(z==n)
rez.push_back(i-n);
c=getchar();
i++;
}
printf("%d\n",rez.size());
for(i=0; i<rez.size() && i<1000; i++)
printf("%d ",rez[i]);
return 0;
}