func_code_string: #include <bits/stdc++.h>   #pragma comment(linker,  /STACK:102400000,102400000 )   using namespace std;   const int N = 100100;   struct point {     int id, val, sum;   } a[N], b[N];   bool cmp(point x, point y) { return x.val > y.val; }   int main() {     int n, m;     scanf( %d%d , &n, &m);     int na = 0;     int nb = 1;     b[0].val = 0;     for (int i = 1; i <= n; ++i) {       int op;       scanf( %d , &op);       if (op == 1) {         scanf( %d , &a[na].val);         a[na++].id = i;       } else {         scanf( %d , &b[nb].val);         b[nb++].id = i;       }     }     sort(a, a + na, cmp);     sort(b + 1, b + nb, cmp);     for (int i = 0; i < na; ++i) {       if (i == 0)         a[i].sum = a[i].val;       else         a[i].sum = a[i - 1].sum + a[i].val;     }     int sum = 0;     int ia = 0;     int ib = 1;     int ans = 0;     for (int i = 0; i < nb && 2 * i <= m; ++i) {       sum += b[i].val;       int id = min(m - 2 * i - 1, na - 1);       int tmp = sum;       if (id >= 0) tmp += a[id].sum;       if (tmp > ans) {         ans = tmp;         ia = id + 1;         ib = i + 1;       }     }     printf( %d n , ans);     for (int i = 0; i < ia; ++i) printf( %d  , a[i].id);     for (int i = 1; i < ib; ++i) printf( %d  , b[i].id);     puts(  );     return 0;   }   