func_code_string: #include <bits/stdc++.h>   using namespace std;   int PASSED_POINT = 0;   void Duxar() {}   void read_int(int &value) {     int sign = 1;     char ch;     value = 0;     while (!isdigit(ch = getchar())) {       (ch ==  - ) && (sign = -1);     }     do {       value = value * 10 + (ch -  0 );     } while (isdigit(ch = getchar()));     value *= sign;   }   int N, M;   vector<int> hero, state;   vector<pair<int, int> > actionTeam;   int nr_bits(int x) {     int ans = 0;     while (x) {       ans += (x & 1);       x >>= 1;     }     return ans;   }   int main() {     int i, mask, act;     string s;     read_int(N);     hero.resize(N);     for (i = 0; i < N; ++i) {       read_int(hero[i]);     }     sort((hero).rbegin(), (hero).rend());     read_int(M);     state.resize((1 << M) - 1);     actionTeam.resize(M);     for (i = 0; i < M; ++i) {       cin >> s >> actionTeam[i].second;       actionTeam[i].first = 0;       if (s[0] ==  p ) actionTeam[i].first = 1;     }     state[(1 << M) - 1] = 0;     for (mask = (1 << M) - 2; mask >= 0; --mask) {       act = nr_bits(mask);       if (actionTeam[act].second == 1) {         state[mask] = -1000000007;         for (i = 0; i < M; ++i) {           if ((mask & (1 << i)) == 0) {             state[mask] = max(state[mask], state[mask | (1 << i)] +                                                actionTeam[act].first * hero[i]);           }         }       } else {         state[mask] = 1000000007;         for (i = 0; i < M; ++i) {           if ((mask & (1 << i)) == 0) {             state[mask] = min(state[mask], state[mask | (1 << i)] -                                                actionTeam[act].first * hero[i]);           }         }       }     }     printf( %d n , state[0]);     return 0;   }   