Pagini recente » Cod sursa (job #368690) | Cod sursa (job #615112) | Cod sursa (job #2138222) | Cod sursa (job #714419) | Cod sursa (job #3185215)
#include <bits/stdc++.h>
using namespace std;
#define INFILE "strmatch.in"
#define OUTFILE "strmatch.out"
void solve(){
string s, aux; cin >> s >> aux;
int lung = s.length();
s += '#';
s += aux;
int n = s.length();
vector<int> pi(n);
for(int i = 1; i < n; ++i){
int j = pi[i - 1];
while(j > 0 && s[i] != s[j]){
j = pi[j - 1];
}
if(s[i] == s[j]) ++j;
pi[i] = j;
}
vector<int> ans;
for(int i = lung; i < n; ++i){
if(pi[i] == lung){
ans.push_back(i - (lung + 3));
}
}
cout << ans.size() << '\n';
for(auto &nr : ans){
cout << nr << " ";
}
}
int main(){
ios_base::sync_with_stdio(false);
freopen(INFILE, "r", stdin);
freopen(OUTFILE, "w", stdout);
cin.tie(0), cout.tie(0);
solve();
return 0;
}