Pagini recente » Cod sursa (job #2739449) | Cod sursa (job #587215) | Cod sursa (job #2934759) | Cod sursa (job #2824471) | Cod sursa (job #3142242)
#include <fstream>
#include <cstring>
using namespace std;
ifstream cin("strmatch.in");
ofstream cout("strmatch.out");
int i, j, n, m, a, b, L, nr;
char A[2000002], B[2000002];
int v[1002], P[2000002];
int main() {
cin>>A+1;
cin>>B+1;
a=strlen(A+1);
b=strlen(B+1);
L=0;
for(i=2;i<=a;i++){
while(L && A[L+1]!=A[i])
L=P[L];
if(A[L+1]==A[i])
L++;
P[i]=L;
}
/*
for(i=1;i<=a;i++){
cout<<P[i]<<" ";
}
*/
L=0;
for(i=1;i<=b;i++){
while(L && A[L+1]!=B[i])
L=P[L];
if(A[L+1]==B[i])
L++;
// cout<<i<<" "<<L<<"\n";
if(L==a){
nr++;
if(nr<=1000)
v[nr]=i-L;
}
}
cout<<nr<<"\n";
for(i=1;i<=min(nr, 1000);i++)
cout<<v[i]<<" ";
}