Pagini recente » Cod sursa (job #3129338) | Cod sursa (job #1692173) | Cod sursa (job #2284875) | Cod sursa (job #3289143) | Cod sursa (job #2409665)
#include<fstream>
#include<cstring>
#define DIM 2000005
using namespace std;
int n, m, i, L, nr;
char a[DIM], b[DIM];
int p[DIM], sol[1005];
ifstream fin("strmatch.in");
ofstream fout("strmatch.out");
int main(){
fin>> a + 1;
n = strlen(a + 1);
fin>> b + 1;
m = strlen(b + 1);
for(i = 2; i <= n; i++){
while(L > 0 && a[L + 1] != a[i]){
L = p[L];
}
if(a[L + 1] == a[i]){
L++;
}
p[i] = L;
}
L = 0;
for(i = 1; i <= m; i++){
while(L > 0 && a[L + 1] != b[i]){
L = p[L];
}
if(a[L + 1] == b[i]){
L++;
}
if(L == n){
nr++;
if(nr <= 1000){
sol[nr] = i - n;
}
}
}
fout<< nr <<"\n";
for(i = 1; i <= min(nr, 1000); i++){
fout<< sol[i] <<" ";
}
return 0;
}