Pagini recente » Cod sursa (job #2619925) | Cod sursa (job #3213106) | aa | Rating Olaru Razvan (Razvan_Olaru) | Cod sursa (job #381932)
Cod sursa(job #381932)
#include<stdio.h>
char toc[2000001],mtb[2000001];
int path[2000001];
int main()
{
char 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;
}