func_code_string: #include <bits/stdc++.h>   using namespace std;   int main() {     int n, m;     cin >> n >> m;     vector<int> atk, def, ciel;     for (int i = 0; i < n; i++) {       string s;       int x;       cin >> s >> x;       if (s ==  ATK )         atk.push_back(x);       else         def.push_back(x);     }     for (int i = 0; i < m; i++) {       int x;       cin >> x;       ciel.push_back(x);     }     sort(atk.begin(), atk.end());     sort(def.begin(), def.end());     sort(ciel.begin(), ciel.end());     int flag = 1;     if (n >= m) flag = 0;     int ans = 0, i = m - 1, j = 0, sum = 0;     while (i >= 0 && j < atk.size()) {       if (atk[j] > ciel[i]) {         break;       }       sum += max(0, ciel[i] - atk[j]);       ans = max(ans, sum);       i--;       j++;     }     i = m - 1;     j = def.size() - 1;     int ans1 = 0, ans2 = 0;     while (i >= 0 && j >= 0) {       if (ciel[i] <= def[j]) {         flag = 0;         break;       }       i--;       j--;     }     i = 0;     vector<int> temp;     if (flag) {       j = 0;       while (i < m && j < def.size()) {         while (ciel[i] <= def[j]) {           temp.push_back(ciel[i]);           i++;           if (i == m) break;         }         i++;         j++;       }     }     while (i < m) {       temp.push_back(ciel[i]);       i++;     }     j = 0;     i = 0;     sum = 0;     int flag2 = 1;     int ans3 = 0;     while (i < temp.size() && j < atk.size()) {       while (temp[i] < atk[j]) {         ans3 += temp[i];         i++;         if (i == temp.size()) break;       }       if (i == temp.size()) break;       ans1 += temp[i] - atk[j];       i++;       j++;     }     while (i < temp.size()) {       ans3 += temp[i];       i++;     }     if (flag && j == atk.size()) ans1 += ans3;     i = temp.size() - 1;     j = 0;     while (i >= 0 && j < atk.size()) {       if (atk[j] > temp[i]) {         flag2 = 0;         break;       }       sum += max(0, temp[i] - atk[j]);       ans2 = max(ans2, sum);       i--;       j++;     }     if (flag2 && flag) {       while (i >= 0) {         ans2 += temp[i];         i--;       }     }     cout << max(ans1, ans) << endl;   }   