func_code_string: #include <bits/stdc++.h>   using namespace std;   const int INF = (int)1E9;   const long long LINF = (long long)1E18;   int INP, AM;   char BUF[(1 << 10) + 1], *inp = BUF;   template <typename T>   T gcd(T a, T b) {     return (b == 0) ? abs(a) : gcd(b, a % b);   }   template <typename T>   inline T lcm(T a, T b) {     return a / gcd(a, b) * b;   }   template <typename T>   inline T sqr(T x) {     return x * x;   }   const char DEBUG_PARAM[] =  __LOCAL_TESTING ;   const char IN[] =  input.txt ;   const char OUT[] =  output.txt ;   int ntest = 0, test;   inline void init();   inline void run();   inline void stop() { ntest = test - 1; }   int main(int argc, char* argv[]) {     if (argc > 1 && strcmp(argv[1], DEBUG_PARAM) == 0) {       freopen(IN,  r , stdin);     }     init();     if (ntest == 0) {       puts( ntest = ? );       return 0;     }     for (test = 1; test <= ntest; test++) {       run();     }     return 0;   }   const int dx[] = {-1, 0, 0, 1};   const int dy[] = {0, -1, 1, 0};   const long double EPS = 1E-9;   const long long MODULO = 1000000007LL;   inline void init() { ntest = 1; }   const int maxn = 100000 + 5;   pair<int, int> p[maxn];   int n;   vector<int> X, Y;   int sumX, sumY;   void solve() {     int limit = ceil((double)n / 2);     for (int i = (n); i >= (1); i--) {       if (((int)(X).size()) == limit) {         Y.push_back(p[i].second);         sumY += p[i].first;       } else if (((int)(Y).size()) == limit) {         X.push_back(p[i].second);         sumX += p[i].first;       } else {         if (sumX < sumY) {           X.push_back(p[i].second);           sumX += p[i].first;         } else {           Y.push_back(p[i].second);           sumY += p[i].first;         }       }     }     cout << ((int)(X).size()) << endl;     for (int i = 0; i < (((int)(X).size())); i++) {       cout << X[i];       if (i != ((int)(X).size()) - 1) cout <<    ;     }     cout << endl;     cout << ((int)(Y).size()) << endl;     for (int i = 0; i < (((int)(Y).size())); i++) {       cout << Y[i];       if (i != ((int)(Y).size()) - 1) cout <<    ;     }   }   inline void run() {     cin >> n;     for (int i = (1); i <= (n); i++) {       cin >> p[i].first;       p[i].second = i;     }     sort(p + 1, p + 1 + n);     solve();   }   