#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();
vector<pair<int,int>> mc(n);
for(int i = 0;i<n;i++)
{
mc[i] = {a[i],b[i]};
}
sort(mc.begin(),mc.end());
int dp[n][x+1];
for(int i = 0;i<n;i++)
{
for(int j = 0;j<=x;j++)
{
if(i == 0)
{
if(j >= mc[i].first)
{
dp[i][j] = 0;
}
else
{
dp[i][j] = mc[i].second;
}
}
else
{
dp[i][j] = dp[i-1][j] + mc[i].second;
if(j >= mc[i].first)
{
dp[i][j] = min(dp[i][j],dp[i-1][j-mc[i].first]);
}
}
}
}
int ans = 0;
for(int i =0 ;i<n;i++)
{
int cy = y;
cy -= dp[i][x];
if(cy >= 0)
{
vector<int> r;
for(int j = i+1;j<n;j++)
{
r.push_back(mc[j].second);
}
sort(r.begin(),r.end());
int cans = 0;
for(int j = 0;j<r.size();j++)
{
if(cy >= r[j])
{
cy-=r[j];
cans++;
}
}
ans = max(ans,cans+i+1);
}
}
int cy = y;
vector<int> r;
for(int j = 0;j<n;j++)
{
r.push_back(mc[j].second);
}
sort(r.begin(),r.end());
int cans = 0;
for(int j = 0;j<r.size();j++)
{
if(cy >= r[j])
{
cy-=r[j];
cans++;
}
}
ans = max(ans,cans);
return ans;
}
# | 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... |