Pagini recente » Cod sursa (job #1108041) | Cod sursa (job #130761) | Cod sursa (job #1179941) | Cod sursa (job #2083869) | Cod sursa (job #1341073)
#include<fstream>
#include<cstring>
using namespace std;
int n, m, i, L, nr;
int p[2000001], p1[2000001], v[2001];
char a[2000001], b[2000001];
ifstream fin("strmatch.in");
ofstream fout("strmatch.out");
int main(){
fin>> a + 1;
n = strlen(a + 1);
p[1] = 0;
for(i = 2; i <= n; i++){
while(a[i] != a[L+1] && L != 0){
L = p[L];
}
if(a[i] == a[L+1]){
L++;
}
p[i] = L;
}
fin>> b + 1;
m = strlen(b + 1);
L = 0;
for(i = 1; i <= m; i++){
while(b[i] != a[L+1] && L != 0){
L = p[L];
}
if(b[i] == a[L+1]){
L++;
}
if(L == n){
nr++;
L = p[L];
if(nr <= 1000){
v[nr] = i - n;
}
}
}
fout<< nr <<"\n";
for(i = 1; i <= nr && i <= 1000; i++){
fout<< v[i] <<" ";
}
return 0;
}