#include <bits/stdc++.h>
using namespace std;
int minimalnykoszt2[2007][10007];
int najlepszysuf2[2007][10007];
int find_maximum_unique(int x, int y, vector<int> a, vector<int> b)
{
int n = a.size(), odp = 0;
vector<pair<int, int>> nowe;
for(int i = 0; i < n; i++)
{
nowe.push_back({a[i], b[i]});
}
sort(nowe.begin(), nowe.end());
for(int i = 1; i <= n; i++)
{
for(int j = 0; j <= x; j++)
{
if(nowe[i - 1].first <= j)
{
minimalnykoszt2[i][j] = min(minimalnykoszt2[i - 1][j] + nowe[i - 1].second, minimalnykoszt2[i - 1][j - nowe[i - 1].first]);
}
else
{
minimalnykoszt2[i][j] = minimalnykoszt2[i - 1][j] + nowe[i - 1].second;
}
}
}
for(int i = n; i > 0; i--)
{
for(int j = 0; j <= y; j++)
{
if(nowe[i - 1].second <= j)
{
najlepszysuf2[i][j] = max(najlepszysuf2[i + 1][j], najlepszysuf2[i + 1][j - nowe[i - 1].second] + 1);
}
else
{
najlepszysuf2[i][j] = najlepszysuf2[i + 1][j];
}
}
}
for(int i = 0; i <= n; i++)
{
if(minimalnykoszt2[i][x] <= y)
{
odp = max(odp, i + najlepszysuf2[i + 1][y - minimalnykoszt2[i][x]]);
}
}
return odp;
}
/*int main()
{
int n, x, y;
cin >> n >> x >> y;
vector<int> a(n), b(n);
for(int i = 0; i < n; i++)
{
cin >> a[i];
}
for(int i = 0; i < n; i++)
{
cin >> b[i];
}
cout << find_maximum_unique(x, y, a, b) << endl;
return 0;
}*/
# | 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... |