func_code_string: #include <bits/stdc++.h>   using namespace std;   const int inf = int(1e9) + 1;   const long double eps = 1e-9;   map<string, int> jogos;   map<string, int> pontos;   map<string, int> gol;   map<string, int> leva;   set<string> times;   vector<string> falta;   int x1, x2;   bool menor(string x, string y) {     int g1 = 0, g2 = 0;     int l1 = 0, l2 = 0;     if (falta[0] == x) {       g1 += x1;       l1 += x2;     } else if (falta[0] == y) {       g2 += x1;       l2 += x2;     }     if (falta[1] == x) {       g1 += x2;       l1 += x1;     } else if (falta[1] == y) {       g2 += x2;       l2 += x1;     }     g1 += gol[x];     l1 += leva[x];     g2 += gol[y];     l2 += leva[y];     if (pontos[x] > pontos[y])       return true;     else if (pontos[x] < pontos[y])       return false;     else {       if (g1 - l1 > g2 - l2)         return true;       else if (g1 - l1 < g2 - l2)         return false;       else {         if (g1 > g2)           return true;         else if (g1 < g2)           return false;         return y > x;       }     }   }   bool ord(int p1, int p2) {     x1 = p1;     x2 = p2;     vector<string> pi;     for (set<string>::iterator it = times.begin(); it != times.end(); ++it) {       string aux = *it;       pi.push_back((aux));     }     for (int i = 3; i >= 1; --i) {       for (int j = 0; j < i; j++) {         if (!menor(pi[j], pi[j + 1])) {           swap(pi[j], pi[j + 1]);         }       }     }     if (pi[0] ==  BERLAND  || pi[1] ==  BERLAND ) return true;     return false;   }   int main() {     for (int i = 0; i < 5; ++i) {       string x, y;       int g1, g2;       cin >> x >> y;       times.insert(x);       times.insert(y);       scanf( %d:%d , &g1, &g2);       jogos[x]++;       jogos[y]++;       if (g1 == g2) {         pontos[x]++;         pontos[y]++;       } else if (g1 > g2) {         pontos[x] += 3;       } else {         pontos[y] += 3;       }       gol[x] += g1;       leva[x] += g2;       gol[y] += g2;       leva[y] += g1;     }     for (set<string>::iterator it = times.begin(); it != times.end(); ++it) {       if (jogos[*it] < 3) falta.push_back(*it);     }     if (falta[1] ==  BERLAND ) swap(falta[0], falta[1]);     pontos[falta[0]] += 3;     int ans1 = 1e8, ans2 = 1e7;     for (int g1 = 0; g1 < 201; ++g1) {       for (int g2 = 0; g2 < g1; ++g2) {         bool can = ord(g1, g2);         if (can) {           if (ans1 - ans2 > g1 - g2) {             ans1 = g1;             ans2 = g2;           }         }       }     }     if (ans1 >= 1e8)       puts( IMPOSSIBLE );     else       printf( %d:%d n , ans1, ans2);     return 0;   }   