Pagini recente » Cod sursa (job #1969175) | Cod sursa (job #522585) | Cod sursa (job #155311) | Cod sursa (job #2971929) | Cod sursa (job #3163489)
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
#define MaxL 2000000
int p[MaxL];
char s[MaxL*2];
int main()
{
ifstream in("strmatch.in");
ofstream out("strmatch.out");
int i, n, res, k=0, cnt=0, cnt2=0;
char ch;
in>>s;
cnt=strlen(s);
s[cnt]='*';
in>>(s+cnt+1);
for(i=1; i<strlen(s); i++)
{
while(k!=0 && s[k]!=s[i])
{
k=p[k-1];
}
if(s[k]==s[i]){k++;}
p[i]=k;
}
out<<k<<'\n';
for(i=1; i<strlen(s); i++)
{
if(p[i]==cnt)
{
cnt2++;
if(cnt2<=1000)
out<<i-2*cnt<<" ";
}
}
return 0;
}