func_code_string: #include <bits/stdc++.h>   using namespace std;   template <class T>   bool umin(T& a, T b) {     if (a > b) {       a = b;       return 1;     }     return 0;   }   template <class T>   bool umax(T& a, T b) {     if (a < b) {       a = b;       return 1;     }     return 0;   }   int F[100009], arr[100009], ans[100009], imp[100009], pos[100009];   void upd(int x, int val) {     for (; x; x -= x & (-x)) F[x] += val;   }   int tap(int x) {     int res = 0;     for (; x < 100009; x += x & (-x)) res += F[x];     return res;   }   set<int> s;   int main() {     int n;     scanf( %d , &n);     for (int i = 1; i <= n; i++) scanf( %d , arr + i), pos[arr[i]] = i;     int all = 0;     for (int i = 1; i <= n; i++) {       int res = tap(arr[i]);       if (!res)         imp[i] = 1;       else if (res == 1) {         int val = *s.rbegin();         ans[pos[val]]++;       }       s.insert(arr[i]);       upd(arr[i], +1);       all += imp[i];     }     int mx = -1, who;     for (int i = 1; i <= n; i++) {       int val = all - imp[i] + ans[i];       if (mx < val)         mx = val, who = arr[i];       else if (mx == val)         umin(who, arr[i]);     }     printf( %d n , who);     return 0;   }   