#include "jelly.h"
#include <bits/stdc++.h>
using namespace std;
int find_maximum_unique(int x, int y, vector<int> a, vector<int> b){
int n = a.size();
int zeros=0;
int mx=0;
bool podz4=true,podz5=true;
for (int i = 0; i<n; i++){
if (a[i]!=b[i])podz5=false;
if (b[i]!=b[0])podz4=false;
}
if (podz4){
if (b[0]==0)return n;
sort(a.begin(),a.end());
while(y>=b.back() && a.size()){
y-=b.back();
b.pop_back();
a.pop_back();
zeros++;
n--;
}
vector<int> dp(x+1);
for (int i = 0; i<n; i++){
if (!a[i]){
zeros++;
continue;
}
for (int j = x; j>=a[i]; j--){
dp[j]=max(dp[j],dp[j-a[i]]+1);
mx=max(mx,dp[j]);
}
}
return mx+zeros;
}
// if (podz5){
// bitset<20001> os;
// os[0]=1;
// for (int i = 0; i<n; i++)os|=(os<<a[i]);
// vector<int> dp(x+y+1);
// for (int i = 0; i<n; i++){
// if (!a[i]){
// zeros++;
// continue;
// }
// for (int j = x+y; j>=a[i]; j--){
// dp[j]=max(dp[j],dp[j-a[i]]+1);
// mx=max(mx,dp[j]);
// }
// }
// if (os[x])return mx+zeros;
// else return max(0,mx)+zeros;
// }
vector<vector<int>> dp(x+1,vector<int>(y+1));
for (int i = 0; i<n; i++){
if (!a[i] || !b[i]){
zeros++;
continue;
}
for (int j = x; j>=0; j--){
for (int u = y; u>=0; u--){
if (j>=a[i])dp[j][u]=max(dp[j][u],dp[j-a[i]][u]+1);
if (u>=b[i])dp[j][u]=max(dp[j][u],dp[j][u-b[i]]+1);
mx=max(mx,dp[j][u]);
}
}
}
return mx+zeros;
}
# | 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... |