Pagini recente » Cod sursa (job #2021646) | Istoria paginii utilizator/georgianab | Cod sursa (job #302606) | Istoria paginii utilizator/tdm1234 | Cod sursa (job #991856)
Cod sursa(job #991856)
#include <fstream>
#include <cstring>
using namespace std;
ifstream f("strmatch.in");
ofstream g("strmatch.out");
char a[300000],b[300000];
long long i,j,k,n1,n2,nr,p,ok,d[200000];
int main()
{
f.getline(a+1,2000001);
f.getline(b+1,2000001);
a[0]=b[0]=' ';
n1=strlen(a)-1;
n2=strlen(b)-1;
for (i=1;i<=n2-n1+1;i++)
{
if (b[i]==a[1])
{ ok=1;
p=0;
for (j=2;j<=n1;j++)
{
if (b[i+j-1]==a[1] && p==0)
p=i+j-1;
if (a[j]!=b[i+j-1])
{
ok=0;
break;
}
}
if(ok){nr++;d[nr]=i-1;}
if (p!=0)i=p-1;
else
i+=n1-1;
}
}
g<<nr<<'\n';
for(i=1;i<=nr;i++)g<<d[i]<<" ";
f.close();
g.close();
}