Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- int main()
- {
- int n, t;
- cin >> n >> t;
- vector <int> s(n);
- for (int i = 0; i < n; i++)
- {
- cin >> s[i];
- }
- vector <int long long> answer;
- vector<int long long>d (n, 0);
- answer.push_back(n);
- int long long l = 0;
- int long long r = 0;
- for (int long long i = 1; i < (s.size() / 2) + 1; i++)
- {
- if (i < r)
- d[i] = min(d[l + r - i + 1], r - i + 1);
- int long long L = i - d[i], R = i + d[i] - 1;
- while(L - 1 >= 0 && R + 1< n && s[L - 1] == s[R + 1]) d[i]++, L--, R++;
- if (d[i] - i == 0)
- {
- answer.push_back(n - i);
- }
- if (R > r)
- l = L, r = R;
- }
- sort(answer.begin(), answer.end());
- for (int i = 0; i< answer.size(); i++)
- {
- if (i < answer.size() - 1)
- cout << answer[i] << " ";
- else
- cout << answer[i];
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement