Pagini recente » Cod sursa (job #1569180) | Cod sursa (job #2055306) | Cod sursa (job #425918) | Cod sursa (job #2563849) | Cod sursa (job #1567457)
#include<fstream>
#include<cstring>
using namespace std;
int n, m, L, i, nr;
char a[2000005], b[2000005];
int p[2000005];
int v[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(a[i] != a[L + 1] && L != 0){
L = p[L];
}
if(a[i] == a[L + 1]){
L++;
}
p[i] = L;
}
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++;
if(nr <= 1000){
v[nr] = i - n;
}
}
}
fout<< nr <<"\n";
for(i = 1; i <= min(nr, 1000); i++){
fout<< v[i] <<" ";
}
return 0;
}