Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <map>
- //#include <bits/stdc++.h>
- using namespace std;
- int main()
- {
- ios_base::sync_with_stdio(false);
- int n;
- cin >> n;
- vector<int> v(n);
- map<int, vector<int>> M;
- for(int i = 0; i < n; i++) {
- cin >> v[i];
- M[v[i]].push_back(i);
- }
- vector<int> res(n, 0);
- for(pair<int, vector<int>> p: M) {
- vector<int> idx = p.second;
- int sz = (int) idx.size();
- if(sz >= 2) {
- for(int i = 0; i < sz; i++) {
- int pi = idx[i];
- int antipodalna_tocka = (pi + n/2) % n;
- vector<int>::iterator it = lower_bound(idx.begin(), idx.end(), antipodalna_tocka);
- vector<int> kandidati;
- if(it != idx.end()) {
- kandidati.push_back(*it);
- }
- if(it != idx.begin()) {
- it--;
- kandidati.push_back(*it);
- }
- kandidati.push_back(idx[0]);
- kandidati.push_back(idx[sz - 1]);
- int max_element = 0;
- for(int j = 0; j < kandidati.size(); j++) {
- if(pi != kandidati[j]) {
- int d = abs(pi - kandidati[j]);
- d = min(d, n - d);
- max_element = max(max_element, d);
- }
- }
- res[pi] = max_element;
- }
- }
- }
- for(int i = 0; i < n; i++) {
- cout << res[i] << " ";
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment