Pagini recente » Cod sursa (job #235673) | Cod sursa (job #1080424) | Cod sursa (job #1055476) | Cod sursa (job #2633166) | Cod sursa (job #381933)
Cod sursa(job #381933)
#include<stdio.h>
char toc[2000001],mtb[2000001];
int path[2000001];
int main()
{
int ln=0;int nr=0;
long long key=0,key2=0;
int ok,i,j;
freopen("strmatch.in","r",stdin);
freopen("strmatch.out","w",stdout);
gets(toc);
gets(mtb);
ok=1;
for(i=0;toc[i];++i)
{
ln++;
key+=toc[i];
key2+=mtb[i];
if(toc[i]!=mtb[i])
ok=0;
}
if(ok)
{
path[nr]=0;
++nr;
}
for(i=ln;mtb[i];++i)
{
key2+=mtb[i];
key2-=mtb[i-ln];
ok=1;
if(key2==key)
{
for(j=0;j<ln;++j)
if(toc[(ln-1)-j]!=mtb[i-j])
{ok=0;break;}
if(ok)
{
path[nr]=i-(j-1);
nr++;
}
}
}
printf("%d\n",nr);
if(nr>999)
nr=1000;
for(i=0;i<nr;++i)
printf("%d ",path[i]);
return 0;
}