func_code_string: #include <bits/stdc++.h>   using namespace std;   int BIT[100005];   int v[100005], n, i, mayor, lol, cosaMenor = 1000005;   int contMayor, numMenor;   bool record[100005];   int buenos;   void add(int pos) {     while (pos > 0) {       BIT[pos]++;       pos -= pos & (-pos);     }   }   int query(int pos) {     int sum = 0;     while (pos <= n) {       sum += BIT[pos];       pos += pos & (-pos);     }     return sum;   }   int cont[100005];   int main() {     scanf( %d , &n);     for (i = 1; i <= n; i++) scanf( %d , &v[i]);     for (i = 1; i <= n; i++) {       if (query(v[i]) == 1)         cont[mayor]++;       else {         if (query(v[i]) > 1) {           cosaMenor = min(cosaMenor, v[i]);         } else {           record[v[i]] = true;           buenos++;         }       }       add(v[i]);       mayor = max(mayor, v[i]);     }     for (i = 1; i <= n; i++) {       if (buenos + cont[i] - (record[i] ? 1 : 0) > contMayor) {         contMayor = buenos + cont[i] - (record[i] ? 1 : 0);         numMenor = i;       } else {         if (buenos + cont[i] - (record[i] ? 1 : 0) == contMayor)           numMenor = min(numMenor, i);       }     }     if (contMayor == 0)       printf( %d , cosaMenor > n ? 1 : cosaMenor);     else       printf( %d , numMenor);     return 0;   }   