Pagini recente » Cod sursa (job #1723635) | Cod sursa (job #3244289) | Cod sursa (job #2313846) | Cod sursa (job #19897) | Cod sursa (job #3163491)
#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;
}