func_code_string: #include <bits/stdc++.h>   using namespace std;   const int mod = 998244353;   const int INF = 1e9 + 7;   const int N = 1010;   const double pi = 3.1415926;   int n;   int t[110], d[110], p[110], pre[2010], now[2010], sum[2010], good[2010];   int dp[2010];   vector<int> v[2010];   struct node {     int t;     int d;     int p;     int id;   } e[110];   bool cmp(node a, node b) { return a.d < b.d; }   int main() {     while (~scanf( %d , &n)) {       for (int i = 0; i < 2010; i++) v[i].clear();       for (int i = 0; i < n; i++) {         scanf( %d%d%d , &e[i].t, &e[i].d, &e[i].p);         e[i].id = i + 1;       }       sort(e, e + n, cmp);       memset(dp, 0, sizeof(dp));       ;       memset(sum, 0, sizeof(sum));       ;       memset(now, 0, sizeof(now));       ;       memset(pre, 0, sizeof(pre));       ;       int ans = 0, idx = 0, s1 = 0, s2 = 0;       for (int i = 0; i < n; i++) {         for (int j = e[i].d; j > e[i].t; j--) {           s1 = 0;           if (dp[j - e[i].t] + e[i].p > dp[j]) {             dp[j] = dp[j - e[i].t] + e[i].p;             sum[j] = sum[j - e[i].t] + 1;             v[j] = v[j - e[i].t];             v[j].push_back(e[i].id);           }           if (dp[j] > ans) {             idx = j;             ans = dp[j];           }         }       }       printf( %d n , ans);       printf( %d n , sum[idx]);       for (int i = 0; i < v[idx].size(); i++) {         printf( %d  , v[idx][i]);       }       printf(  n );     }     return 0;   }   