Pagini recente » Cod sursa (job #1758428) | Cod sursa (job #877924) | Cod sursa (job #662001) | Cod sursa (job #3239402) | Cod sursa (job #3153466)
#include <fstream>
#include <vector>
#include <string>
using namespace std;
int main() {
ifstream fin("strmatch.in");
ofstream fout("strmatch.out");
string s, t;
fin >> s >> t;
int N = s.length();
s = s + "$" + t;
vector <int> pi(s.length(), 0);
for (int i = 1, k = 0;i < s.length();++i) {
while (k > 0 && s[i] != s[k]) {
k = pi[k - 1];
}
if (s[i] == s[k]) {
k += 1;
}
pi[i] = k;
}
vector <int> answer;
int cnt = 0;
for (int i = 0;i < pi.size();++i) {
if (pi[i] == N) {
cnt += 1;
if (cnt <= 1000) {
answer.push_back(i - 2 * N);
}
}
}
fout << cnt << "\n";
for (auto& x : answer) {
fout << x << " ";
}
fin.close();
fout.close();
return 0;
}