func_code_string: #include <bits/stdc++.h>   using namespace std;   struct number {     long long sum, a, b;     bool operator<(const number& in) const { return sum < in.sum; }     bool operator>(const number& in) const { return sum > in.sum; }   };   vector<number> v;   const long long MN = 2000 + 1;   long long a[MN], b[MN];   long long n, m, suma, sumb;   int main() {     cin >> n;     for (long long i = 0; i < n; i++) {       cin >> a[i];       suma += a[i];     }     cin >> m;     for (long long j = 0; j < m; j++) {       cin >> b[j];       sumb += b[j];     }     for (long long i = 0; i < m; i++)       for (long long j = i + 1; j < m; j++) {         number temp;         temp.a = i;         temp.b = j;         temp.sum = 2 * (b[i] + b[j]);         v.push_back(temp);       }     sort(v.begin(), v.end());     long long best = abs(suma - sumb), in1 = -1, in2, in3 = -1;     for (long long i = 0; i < n; i++)       for (long long j = 0; j < m; j++)         if (best > abs(suma - sumb - a[i] - a[i] + b[j] + b[j])) {           best = abs(suma - sumb - a[i] - a[i] + b[j] + b[j]);           in1 = i;           in2 = j;         }     if (m > 1 && n > 1) {       for (long long i = 0; i < n; i++)         for (long long j = i + 1; j < n; j++) {           long long want = suma - sumb - a[i] - a[j] - a[i] - a[j];           want *= -1;           vector<number>::iterator low, up;           number temp;           temp.sum = want;           low = std::lower_bound(v.begin(), v.end(), temp);           up = upper_bound(v.begin(), v.end(), temp);           if (low >= v.begin() && low < v.end())             if (best > abs(want - v[low - v.begin()].sum)) {               best = abs(want - v[low - v.begin()].sum);               in1 = i;               in2 = j;               in3 = low - v.begin();             }           while (up >= v.end()) up--;           if (best > abs(want - v[up - v.begin()].sum)) {             best = abs(want - v[up - v.begin()].sum);             in1 = i;             in2 = j;             in3 = up - v.begin();           }         }     }     if (in1 == -1) {       cout << best << endl << 0 << endl;       return 0;     }     if (in3 == -1) {       cout << best << endl << 1 << endl << in1 + 1 <<     << in2 + 1 << endl;       return 0;     }     cout << best << endl;     cout << 2 << endl;     cout << in1 + 1 <<     << v[in3].a + 1 << endl;     cout << in2 + 1 <<     << v[in3].b + 1 << endl;     return 0;   }   