Advertisement
kokokozhina

620C

Jan 21st, 2016
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.20 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <algorithm>
  4. #include <utility>
  5. //no
  6. using namespace std;
  7. int n;
  8. vector<int> a;
  9.  
  10. vector<int>::iterator f(vector<int>::iterator start, vector<int>::iterator cur)
  11. {
  12.     vector<int>::iterator result = cur;
  13.     for(vector<int>::iterator i = start + 1; i != cur; i++)
  14.     {
  15.         vector<int>::iterator work = find(i + 1, cur, *(i));
  16.         if (work != cur && (work - i) < (cur - start))
  17.             result = work;
  18.     }
  19.     return result;
  20. }
  21.  
  22. int main()
  23. {
  24.     scanf("%d", &n);
  25.     for(int i = 0; i < n; i++)
  26.     {
  27.         int cur;
  28.         scanf("%d", &cur);
  29.         a.push_back(cur);
  30.     }
  31.     vector<int>::iterator it = a.begin();
  32.     vector<pair<int, int>> res;
  33.     int j = 0;
  34.     res.push_back(make_pair(0, 0));
  35.     while(j < n)
  36.     {
  37.         vector<int>::iterator cur = find(a.begin() + j + 1, a.end(), *(a.begin() + j));
  38.         if (cur == a.end())
  39.             ++j;
  40.         else
  41.         {
  42.             cur = f(a.begin() + j, cur);
  43.             res.push_back(make_pair(res.back().second + 1, cur - a.begin() + 1));
  44.             j = cur - a.begin() + 1;
  45.         }
  46.     }
  47.     if(res.size() == 1)
  48.         cout << -1;
  49.     else
  50.     {
  51.         res.back().second = n;
  52.         printf("%d\n", res.size() - 1);
  53.         for(int i = 1; i < res.size(); i++)
  54.             printf("%d %d\n", res[i].first, res[i].second);
  55.     }
  56.     return 0;
  57. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement