func_code_string: #include <bits/stdc++.h>   using namespace std;   template <class T>   inline string itos(T n) {     return (n) < 0    ?  -  + itos(-(n))            : (n) < 10 ? (string)(  ) + (char)( 0  + (n))                       : itos((n) / 10) + itos((n) % 10);   }   string name[60];   map<string, int> mp;   int point[60], _plus[60], _minus[60];   vector<pair<pair<int, pair<int, int> >, string> > v;   int main(void) {     int N, i, j;     string s;     cin >> N;     for ((i) = 0; (i) < (int)(N); (i)++) {       cin >> name[i];       mp[name[i]] = i;     }     for ((i) = 0; (i) < (int)(N * (N - 1) / 2); (i)++) {       cin >> s;       for (j = 0;; j++) {         if (s[j] ==  - ) break;       }       int a = mp[s.substr(0, j)];       int b = mp[s.substr(j + 1)];       int x, y;       cin >> s;       for ((j) = 0; (j) < (int)(s.length()); (j)++) {         if (s[j] ==  : ) {           s[j] =    ;         }       }       istringstream ss(s);       ss >> x >> y;       if (x > y)         point[a] += 3;       else if (x < y)         point[b] += 3;       else {         point[a]++;         point[b]++;       }       _plus[a] += x;       _plus[b] += y;       _minus[a] += y;       _minus[b] += x;     }     for ((i) = 0; (i) < (int)(N); (i)++) {       v.push_back(make_pair(           make_pair(-point[i], make_pair(_minus[i] - _plus[i], -_plus[i])),           name[i]));     }     sort(v.begin(), v.end());     vector<string> ans;     for ((i) = 0; (i) < (int)(N / 2); (i)++) {       ans.push_back(v[i].second);     }     sort(ans.begin(), ans.end());     for ((i) = 0; (i) < (int)(N / 2); (i)++) {       cout << ans[i] << endl;     }     return 0;   }   