/STUDY - Kế hoạch học tập

<Problem>

http://ntucoder.net/Problem/Details/4442
              #include <iostream>
      using namespace std;
      
      int main() {
        int n, m;
        cin >> n >> m;
      
        int c[200][200] = { 0 };
      
        for (int i = 1; i <= n; i++) {
          for (int j = 1; j <= m; j++) {
            cin >> c[i][j];
          }
        }
      
        int f[200][200] = { 0 };
        for (int i = 1; i <= n; i++) {
          for (int j = 1; j <= m; j++) {
            for (int k = 0; k <= j; k++) {
              f[i][j] = max(f[i][j], f[i - 1][j - k] + c[i][k]);
            }
          }
        }
      
        cout << f[n][m] << endl;
      
        int i = n;
        int j = m;
        int result[200] = { 0 };
        while (i >= 1) {
          while (f[i][j] == f[i - 1][j] && i >= 1) {
            result[i] = 0;
            i--;
          }
          for (int k = 0; k <= j; k++) {
            if (f[i - 1][k] + c[i][j - k] == f[i][j]) {
              result[i] = j - k;
              j = k;
              break;
            }
          }
          i--;
        }
      
        //cout << "ENTER" << endl;
      
        for (int i = 1; i <= n; i++) {
          cout << result[i] << endl;
        }
        return 0;
      }