Pagini recente » Cod sursa (job #2919746) | Cod sursa (job #2980897) | Cod sursa (job #1222311) | Cod sursa (job #3268328) | Cod sursa (job #1221899)
#include <fstream>
#include <list>
#include <cstring>
#define DIM 2000011
using namespace std;
ifstream f("strmatch.in");
ofstream g("strmatch.out");
char A[DIM],B[DIM],*p;
int P[DIM],n,m,L,nr;
list<int> sol;
int main(void){
register int i,j;
f>>A+1>>B+1;
n=strlen(A+1);
L=0,P[1]=0;
for(p=A+2;*p;p++){
while(*p!=A[L+1] && L!=0) L=P[L];
if(*p==A[L+1]) L++;
P[p-A]=L;
}
L=0;
for(p=B+1;*p;p++){
while(*p!=A[L+1] && L) L=P[L];
if(*p==A[L+1])
L++;
if(L==n){
nr++;
if(nr<1000)
sol.push_back(p-B-L);
}
}
g<<nr<<"\n";
for(list<int>::iterator it=sol.begin();it!=sol.end();it++)
g<<*it<<" ";
f.close();
g.close();
return 0;
}