Advertisement
_takumi

Tinkoff_A

Sep 8th, 2019
330
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.09 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. int main() {
  5.     int n = 0;
  6.     cin >> n;
  7.     vector<int> v;
  8.     cin >> v[0];
  9.     int min_i = 0, max_i = 0;
  10.     for (int i = 1; i < n; ++i) {
  11.         cin >> v[i];
  12.         min_i = (v[min_i] > v[i]) ? i : min_i;
  13.         max_i = (v[max_i] < v[i]) ? i : max_i;
  14.     }
  15.  
  16.     if (is_sorted(rbegin(v), rend(v))) {
  17.         cout << "0 0";
  18.         return 0;
  19.     }
  20.  
  21.     if (max_i > min_i) {
  22.         cout << min_i + 1 << ' ' << max_i + 1;
  23.         return 0;
  24.     }
  25.  
  26.     int min_i2 = min_element(begin(v), begin(v) + max_i) - begin(v);
  27.     int dif1 = v[max_i] - v[min_i2];
  28.  
  29.     int max_i2 = max_element(begin(v) + min_i, end(v)) - begin(v);
  30.     int dif2 = v[max_i2] - v[min_i];
  31.  
  32.     int max_i3 = max_element(begin(v) + max_i + 1, begin(v) + min_i) - begin(v);
  33.     int min_i3 = min_element(begin(v) + max_i + 1, begin(v) + min_i) - begin(v);
  34.     int dif3 = v[max_i3] - v[min_i3];
  35.  
  36.     int val = max(dif1, dif2);
  37.     val = max(val, dif3);
  38.     if (val == dif1)
  39.         cout << min_i2 + 1 << ' ' << max_i + 1;
  40.     else if (val == dif2)
  41.         cout << min_i + 1 << ' ' << max_i2 + 1;
  42.     else if (val == dif3)
  43.         cout << min_i3 + 1 << ' ' << max_i3 + 1;
  44.     return 0;
  45. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement