func_code_string: #include <bits/stdc++.h>   using namespace std;   int t1, t2;   int s1[100010], s2[100010];   pair<int, int> c1[100010], c2[100010];   bool cmp(pair<int, int> a, pair<int, int> b) { return a.first > b.first; }   int main() {     int n, v;     cin >> n >> v;     for (int i = 0; i < n; i++) {       int t, p;       cin >> t >> p;       if (t == 1) {         c1[t1++] = make_pair(p, i + 1);       } else         c2[t2++] = make_pair(p, i + 1);     }     sort(c1, c1 + t1, cmp);     sort(c2, c2 + t2, cmp);     s1[0] = s2[0] = 0;     for (int i = 0; i < t1; i++) {       s1[i + 1] = s1[i] + c1[i].first;     }     for (int i = 0; i < t2; i++) {       s2[i + 1] = s2[i] + c2[i].first;     }     int ans = -1;     int tmp = -1;     for (int i = 0; i <= t2; i++) {       if (i * 2 <= v && s1[min(v - i * 2, t1)] + s2[i] > ans) {         ans = s1[min(v - i * 2, t1)] + s2[i];         tmp = i;       }     }     cout << ans << endl;     for (int i = 0; i < min(v - tmp * 2, t1); i++) cout << c1[i].second << endl;     for (int i = 0; i < tmp; i++) cout << c2[i].second << endl;     return 0;   }   