이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <algorithm>
#include <cassert>
#include <cstring>
#include <vector>
#include <numeric>
#include <iostream>
#include <tuple>
typedef std::vector<int> Vec;
#define rep(i,a,b) for(auto i = a; i != b; ++i)
auto ckmax = [](auto& a, const auto& b) { return b>a?a=b,1:0; };
auto ckmin = [](auto& a, const auto& b) { return b<a?a=b,1:0; };
const int MN = 2e3+10;
const int MV = 1e4+10;
struct Data {
public:
int jelly_count, remain_b_value;
Data inc() {return {jelly_count+1, remain_b_value};}
Data buy(int cost) { return {jelly_count+1, remain_b_value - cost};}
bool operator < (const Data& o) const {
return std::tie(jelly_count, remain_b_value) < std::tie(o.jelly_count, o.remain_b_value);
}
};
Data dp[MV];
int find_maximum_unique(int xn, int yn, std::vector<int> an, std::vector<int> bn)
{
int N = an.size();
std::vector<int> ord(N);
std::iota(ord.begin(), ord.end(), 0);
std::sort(ord.begin(), ord.end(), [&](int u, int v){return bn[u] < bn[v];});
std::fill_n(dp, xn+1, Data({ 0, yn }));
for (int i = 0; i != N; ++i) {
int curr_a = an[ord[i]]; // a = ? ? ? ? ?
int curr_b = bn[ord[i]]; // b = 1 2 3 4 5
for(int ai = 0; ai <= xn; ++ai) {
if (dp[ai].remain_b_value >= curr_b) dp[ai] = dp[ai].buy(curr_b);
if (ai + curr_a <= xn) {
dp[ai] = std::max(dp[ai], dp[ai + curr_a].inc());
}
}
}
return dp[0].jelly_count;
}
inline int input() {
int i; std::cin >> i; return i;
}
#ifdef KRIST_LOCAL
int main() {
assert(4 == find_maximum_unique(6, 12, Vec({5, 1, 5, 6, 3}), Vec({3, 5, 4, 6, 7})));
puts("pass");
// using namespace std;
// cin.sync_with_stdio(0);
// int n = input();
// int x = input();
// int y = input();
// std::vector<int> xn(n);
// std::vector<int> yn(n);
// rep(i, 0, n) xn[i] = input();
// rep(i, 0, n) yn[i] = input();
// cout << find_maximum_unique(x, y, xn, yn);
}
#endif
# | 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... |