Advertisement
jasonpogi1669

Point Cramming (TLAC) Complete Solution using C++

Jul 30th, 2021
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.08 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. int FindMaximumPoints(int time, vector<int> video_time, vector<int> video_points, int n) {
  6.     vector<vector<int>> K(n + 1, vector<int>(time + 1));
  7.     for (int i = 0; i <= n; i++) {
  8.         for (int tm = 0; tm <= time; tm++) {
  9.             if (i == 0 || tm == 0) {
  10.                 K[i][tm] = 0;
  11.             } else if (video_time[i - 1] <= tm) {
  12.                 K[i][tm] = max(video_points[i - 1] + K[i - 1][tm - video_time[i - 1]], K[i - 1][tm]);
  13.             } else {
  14.                 K[i][tm] = K[i - 1][tm];
  15.             }
  16.         }
  17.     }
  18.     return K[n][time];
  19. }
  20.  
  21. int main() {
  22.     int time, required_points, n;
  23.     cin >> time >> required_points >> n;
  24.     vector<int> video_time(n);
  25.     for (int i = 0; i < n; i++) {
  26.         cin >> video_time[i];
  27.     }
  28.     vector<int> video_points(n);
  29.     for (int i = 0; i < n; i++) {
  30.         cin >> video_points[i];
  31.     }
  32.     int res = FindMaximumPoints(time, video_time, video_points, n);
  33.     cout << res << " " << (res >= required_points ? "true" : "false") << '\n';
  34.     return 0;
  35. }
  36.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement