func_code_string: #include <bits/stdc++.h>   using namespace std;   int n, v, t, p, cnt1, cnt2, x;   vector<pair<int, int>> k, c;   vector<int> ans;   void add(bool sm) {     v--;     if (sm) {       x += k[cnt1].first;       ans.push_back(k[cnt1++].second);     } else {       x += c[cnt2].first;       ans.push_back(c[cnt2++].second);       v--;     }   }   void solve() {     cin >> n >> v;     for (int i = 0; i < n; ++i) {       cin >> t >> p;       t--;       if (t) {         c.push_back({p, i + 1});       } else {         k.push_back({p, i + 1});       }     }     sort(k.begin(), k.end());     sort(c.begin(), c.end());     reverse(k.begin(), k.end());     reverse(c.begin(), c.end());     while ((v >= 1 && cnt1 < k.size()) || (v >= 2 && cnt2 < c.size())) {       add((cnt2 == c.size() || v == 1) || (k[cnt1].first > c[cnt2].first) ||           (cnt1 < k.size() - 1 &&            k[cnt1].first + k[cnt1 + 1].first > c[cnt2].first));     }     cout << x << endl;     for (int i = 0; i < ans.size(); ++i) {       cout << ans[i] <<    ;     }     cout << endl;   }   int main() {     ios::sync_with_stdio(0);     cin.tie(0);     cout.tie(0);     solve();     return 0;   }   