func_code_string: #include <bits/stdc++.h>   using namespace std;   struct node {     unsigned long int val;     long int index;     unsigned long int other;   };   bool cmp(node& a, node& b) {     if (a.val != b.val)       return a.val < b.val;     else       return a.other > b.other;   }   struct node2 {     bool operator()(const node& a, const node& b) const {       if (a.other != b.other)         return a.other < b.other;       else if (a.val != b.val)         return a.val < b.val;       else         return a.index < b.index;     }   };   int main() {     unsigned long int n;     scanf( %lu , &n);     vector<node> all(n);     for (unsigned long int i = 0; i < n; i++) {       scanf( %lu , &all[i].other);       scanf( %lu , &all[i].val);       if (all[i].other > all[i].val) swap(all[i].other, all[i].val);       all[i].index = i + 1;     }     sort(all.begin(), all.end(), cmp);     unsigned long int outer = 0, id = 0;     set<node, node2> ended;     for (unsigned long int i = 0; i < n; i++) {       auto it = ended.insert(all[i]).first;       auto it1 = it, it2 = it;       it1++;       if (it1 != ended.end()) {         outer = (*it).index;         id = (*it1).index;         break;       } else if (it2 != ended.begin()) {         it2--;         if ((*it2).other >= (*it).other) {           outer = (*it).index;           id = (*it2).index;         }       }     }     if (outer == 0)       printf( -1 -1 n );     else       printf( %lu %lu n , id, outer);     return 0;   }   