func_code_string: #include <bits/stdc++.h>   using namespace std;   long long a[2005], b[2005];   vector<pair<long long, pair<int, int> > > bb;   long long diff = 0L;   bool good(long long x, int place) {     if (place >= bb.size())       return false;     else       return diff + 2 * (bb[place].first - x) <= 0;   }   int find_(long long x) {     int place = -1, jump = bb.size();     while (jump > 0) {       if (good(x, place + jump)) place += jump;       jump /= 2;     }     while (good(x, place + 1)) place++;     return place;   }   bool sorter(pair<long long, pair<int, int> > a,               pair<long long, pair<int, int> > b) {     return a.first < b.first;   }   int main() {     int n;     scanf( %i , &n);     for (int e = 0; e < n; e++) scanf( %I64d , &a[e]);     int m;     scanf( %i , &m);     for (int e = 0; e < m; e++) scanf( %I64d , &b[e]);     for (int e = 0; e < n; e++) diff += a[e];     for (int e = 0; e < m; e++) diff -= b[e];     long long acc = diff;     vector<pair<int, int> > rr;     for (int e = 0; e < n; e++) {       for (int ee = 0; ee < m; ee++) {         if (abs(diff + 2 * (b[ee] - a[e])) < abs(acc)) {           acc = diff + 2 * (b[ee] - a[e]);           rr.clear();           rr.push_back(make_pair(e, ee));         }       }     }     for (int e = 0; e < m; e++) {       for (int ee = e + 1; ee < m; ee++) {         bb.push_back(make_pair(b[e] + b[ee], make_pair(e, ee)));       }     }     sort(bb.begin(), bb.end(), sorter);     for (int e = 0; e < n; e++) {       for (int ee = e + 1; ee < n; ee++) {         long long itm = a[e] + a[ee];         int pl = find_(itm);         if (pl < (int)bb.size() - 1) {           if (abs(diff + 2 * (bb[pl + 1].first - itm)) < abs(acc)) {             acc = diff + 2 * (bb[pl + 1].first - itm);             rr.clear();             rr.push_back(make_pair(e, bb[pl + 1].second.first));             rr.push_back(make_pair(ee, bb[pl + 1].second.second));           }         }         if (pl > -1) {           if (abs(diff + 2 * (bb[pl].first - itm)) < abs(acc)) {             acc = diff + 2 * (bb[pl].first - itm);             rr.clear();             rr.push_back(make_pair(e, bb[pl].second.first));             rr.push_back(make_pair(ee, bb[pl].second.second));           }         }       }     }     printf( %I64d n%i n , abs(acc), rr.size());     for (auto e : rr) printf( %i %i n , e.first + 1, e.second + 1);     return 0;   }   