Pagini recente » Cei mai frumosi! | Cod sursa (job #1151206) | Cod sursa (job #92445) | Cod sursa (job #3140846) | Cod sursa (job #2568302)
#include <bits/stdc++.h>
#define x first
#define y second
using namespace std;
typedef long long ll;
ifstream in("strmatch.in");
ofstream out("strmatch.out");
const int N = 4000005;
string s;
char c;
vector < int > ans;
int pi[N];
int n;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(0);
in >> s;
n = s.size();
s += '#';
while(in >> c) {
s += c;
}
for (int i = 1; i < s.size(); i++) {
int len = pi[i - 1];
while(len > 0 && s[len] != s[i]) {
len = pi[len - 1];
}
if (s[len] == s[i]) {
len++;
}
pi[i] = len;
if (pi[i] == n && ans.size() < 1000) {
ans.push_back(i - 2 * n);
}
}
for (auto it : ans) {
out << it << " ";
}
return 0;
}