#include "jelly.h"
#include <bits/stdc++.h>
using namespace std;
const int maxn=2001;
const int maxx=10001;
int dp[maxn][2*maxx], a[maxn], b[maxn];
int find_maximum_unique(int x, int y, vector<int> A, vector<int> B){
int n=A.size();
vector<pair<int,int>>process;
for(int i=0;i<n;i++) process.push_back({A[i],B[i]});
sort(process.begin(),process.end());
int id=0;
for(pair<int,int> p : process){
id++;
a[id]=p.first; b[id]=p.second;
}
// com essa ordenação vale a pena gastar primeiro tudo na loja A, e dps gastar tudo na loja B
int resp=0;
for(int i=1;i<=n;i++){
for(int j=0;j<=x+y;j++){
dp[i][j]=dp[i-1][j];
int c=j;
if(j>x){ // já gastei tudo na loja A, ent tenho q gastar na loja B
c-=x; // usar y agr
if(c>=b[i]) dp[i][j]=max(dp[i][j],dp[i-1][j-b[i]]+1);
// ainda gastar tudo em A
if(a[i]<=x) dp[i][j]=max(dp[i][j],dp[i-1][x-a[i]]+1);
}else{
if(c>=a[i]) dp[i][j]=max(dp[i][j],dp[i-1][j-a[i]]+1);
}
resp=max(resp,dp[i][j]);
}
}
return resp;
}
# | 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... |