Pagini recente » Cod sursa (job #3243342) | Cod sursa (job #1428369) | Cod sursa (job #1551596) | Cod sursa (job #2330319) | Cod sursa (job #2910593)
#include <fstream>
#include <cstring>
using namespace std;
ifstream fin("strmatch.in");
ofstream fout("strmatch.out");
int n,m,i,subsecv,l;
int w[2000010],rez[1010];
char a[2000010],b[2000010];
int main() {
fin>>a+1;
fin>>b+1;
n=strlen(a+1);
m=strlen(b+1);
l=0;
w[1]=0;
for (i=2;i<=n;i++) {
while (a[i]!=a[l+1]&&l!=0) {
l=w[l];
}
if (a[i]==a[l+1]) {
l++;
}
w[i]=l;
}
for (i=1;i<=m;i++) {
while (b[i]!=a[l+1]&&l!=0) {
l=w[l];
}
if (b[i]==a[l+1]) {
l++;
}
if (l==n) {
subsecv++;
if (subsecv<=1000) {
rez[subsecv]=i-n;
}
l=w[l];
}
}
fout<<subsecv<<"\n";
for (i=1;i<=min(subsecv,1000);i++) {
fout<<rez[i]<<" ";
}
return 0;
}