#include <iostream>
#include <vector>
using namespace std;
int dp[2'007][10'007];
int dyn[207][507][507];
int find_maximum_unique(int x, int y, vector<int> fir, vector<int> sec)
{
int n=fir.size();
if(n<205 && x<505 && y<505)
{
for(int a=0; a<n; a++){
for(int i=0; i<=x; i++){
for(int j=0; j<=y; j++){
dyn[a+1][i][j]=max(dyn[a+1][i][j],dyn[a][i][j]);
if(i+fir[a]<=x)
dyn[a+1][i+fir[a]][j]=max(dyn[a+1][i+fir[a]][j],dyn[a][i][j]+1);
if(j+sec[a]<=y)
dyn[a+1][i][j+sec[a]]=max(dyn[a+1][i][j+sec[a]],dyn[a][i][j]+1);
}
}
}
return dyn[n][x][y];
}
for(int a=0; a<n; a++){
for(int i=0; i<=x; i++){
dp[a+1][i]=max(dp[a+1][i],dp[a][i]);
if(sec[a]==0)
dp[a+1][i]=max(dp[a+1][i],dp[a][i]+1);
if(i+fir[a]<=x)
dp[a+1][i+fir[a]]=max(dp[a][i]+1,dp[a+1][i+fir[a]]);
}
}
int odp=dp[n][x];
if(y!=0){
if(sec[0]==0)
odp=n;
else
odp+=y/sec[0];
}
return min(odp,n);
}
# | 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... |