Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <algorithm>
- #include <utility>
- //no
- using namespace std;
- int n;
- vector<int> a;
- vector<int>::iterator f(vector<int>::iterator start, vector<int>::iterator cur)
- {
- vector<int>::iterator result = cur;
- for(vector<int>::iterator i = start + 1; i != cur; i++)
- {
- vector<int>::iterator work = find(i + 1, cur, *(i));
- if (work != cur && (work - i) < (cur - start))
- result = work;
- }
- return result;
- }
- int main()
- {
- scanf("%d", &n);
- for(int i = 0; i < n; i++)
- {
- int cur;
- scanf("%d", &cur);
- a.push_back(cur);
- }
- vector<int>::iterator it = a.begin();
- vector<pair<int, int>> res;
- int j = 0;
- res.push_back(make_pair(0, 0));
- while(j < n)
- {
- vector<int>::iterator cur = find(a.begin() + j + 1, a.end(), *(a.begin() + j));
- if (cur == a.end())
- ++j;
- else
- {
- cur = f(a.begin() + j, cur);
- res.push_back(make_pair(res.back().second + 1, cur - a.begin() + 1));
- j = cur - a.begin() + 1;
- }
- }
- if(res.size() == 1)
- cout << -1;
- else
- {
- res.back().second = n;
- printf("%d\n", res.size() - 1);
- for(int i = 1; i < res.size(); i++)
- printf("%d %d\n", res[i].first, res[i].second);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement