Pagini recente » Cod sursa (job #3243360) | Cod sursa (job #2427904) | Cod sursa (job #1759727) | Cod sursa (job #2761166) | Cod sursa (job #631580)
Cod sursa(job #631580)
#include<fstream>
#define N 2000010
std::ifstream in("strmatch.in");std::ofstream out("strmatch.out");char s[N],w[N];int pmt[N],i,k=2,c[N],l,n,m,t;int main(){in.getline(w,N);in.getline(s,N);while(w[++m]);while(s[++n]);pmt[0]=-1;while(k<=m){while(w[k-1]==w[t])pmt[k++]=++t;if(t)t=pmt[t];else pmt[k++]=0;}k=0;while(k+i<n){while(w[i]==s[k+i]&&i<m)i++;if(i==m)c[l++]=k;k+=i-pmt[i];if(pmt[i]>-1) i=pmt[i];else i=0;}out<<l<<"\n";if(l>1000)l=1000;for(i=0;i<l;i++)out<<c[i]<<" ";out<<"\n";return 0;}