Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- int FindMaximumPoints(int time, vector<int> video_time, vector<int> video_points, int n) {
- vector<vector<int>> K(n + 1, vector<int>(time + 1));
- for (int i = 0; i <= n; i++) {
- for (int tm = 0; tm <= time; tm++) {
- if (i == 0 || tm == 0) {
- K[i][tm] = 0;
- } else if (video_time[i - 1] <= tm) {
- K[i][tm] = max(video_points[i - 1] + K[i - 1][tm - video_time[i - 1]], K[i - 1][tm]);
- } else {
- K[i][tm] = K[i - 1][tm];
- }
- }
- }
- return K[n][time];
- }
- int main() {
- int time, required_points, n;
- cin >> time >> required_points >> n;
- vector<int> video_time(n);
- for (int i = 0; i < n; i++) {
- cin >> video_time[i];
- }
- vector<int> video_points(n);
- for (int i = 0; i < n; i++) {
- cin >> video_points[i];
- }
- int res = FindMaximumPoints(time, video_time, video_points, n);
- cout << res << " " << (res >= required_points ? "true" : "false") << '\n';
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement