Pagini recente » Cod sursa (job #1990894) | Cod sursa (job #240715) | Cod sursa (job #474825) | Cod sursa (job #2162090) | Cod sursa (job #2987724)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("strmatch.in");
ofstream fout("strmatch.out");
char s1[2000001],s2[2000001];
int v[2000001],sol[1001];
int main()
{
int i,j=0,l1,l2,cons=0;
fin>>s1;
l1=strlen(s1);
for(i=1;i<l1;i++)
{
if(s1[i]==s1[j])
{
cons++;
j++;
v[i]=cons;
}
else if(j!=0)
{
cons=0;
j=0;
i--;
}
}
fin>>s2;
cons=0;
l2=strlen(s2);
j=-1;
for(i=0;i<l2;i++)
{
if(s1[j+1]==s2[i])
j++;
else if(j!=-1)
{
i--;
if(v[j]!=0)
j=v[j];
else j=-1;
}
if(j==l1-1)
{
cons++;
if(cons<=1000)
sol[cons]=i-j;
i=i-j;
j=-1;
}
}
fout<<cons<<'\n';
if(cons>1000)cons=1000;
for(i=1;i<=cons;i++)fout<<sol[i]<< ' ';
}