#include "jelly.h"
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 2000;
const int MAXN2 = 200;
const int MAXX2 = 500;
const int MAXX = 10 * 1000;
int dp[MAXN2 + 1][MAXX2 + 1][MAXX2 + 1];
int dp2[MAXN + 1][MAXX + 1][2];
int find_maximum_unique(int x, int y, vector<int> a, vector<int> b) {
int n = int(a.size());
if (y == 0) {
int wyn = 0;
for (int i = 1; i <= n; i ++) {
for (int j = 0; j <= x; j ++) {
for (int k = 0; k <= y; k ++) {
dp2[i][j][k] = dp2[i - 1][j][k];
if (j >= a[i - 1]) {
dp2[i][j][k] = max(dp2[i - 1][j - a[i - 1]][k] + 1, dp2[i][j][k]);
}
if (k >= b[i - 1]) {
dp2[i][j][k] = max(dp2[i - 1][j][k - b[i - 1]] + 1, dp2[i][j][k]);
}
wyn = max(wyn, dp2[i][j][k]);
}
}
}
return wyn;
}
if (n <= MAXN2 && x <= MAXX2 && y <= MAXX2) {
int wyn = 0;
for (int i = 1; i <= n; i ++) {
for (int j = 0; j <= x; j ++) {
for (int k = 0; k <= y; k ++) {
dp[i][j][k] = dp[i - 1][j][k];
if (j >= a[i - 1]) {
dp[i][j][k] = max(dp[i - 1][j - a[i - 1]][k] + 1, dp[i][j][k]);
}
if (k >= b[i - 1]) {
dp[i][j][k] = max(dp[i - 1][j][k - b[i - 1]] + 1, dp[i][j][k]);
}
wyn = max(wyn, dp[i][j][k]);
}
}
}
return wyn;
}
return n;
}
/*
int main () {
cout << find_maximum_unique(7, 0, {10, 5, 2, 1, 4}, {2, 2, 2, 2, 2});
}
*/
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |