Submission #1169269

#TimeUsernameProblemLanguageResultExecution timeMemory
1169269RoupiqJelly Flavours (IOI20_jelly)C++20
54 / 100
96 ms1356 KiB
#include "jelly.h" #include <vector> #include <bits/stdc++.h> using namespace std; #define maxeq(a, b) a = max(a, b) template <typename T> ostream &operator<<(ostream &o, const vector<T> &v) { o << "["; for (int i = 0; i < size(v); i++) { o << (i ? "," : "") << v[i]; } o << "]"; return o; } int dp_solve(int x, int y, vector<int> a, vector<int> b) { vector<vector<int>> dp; dp.resize(x + 1, vector<int>(y + 1, INT_MIN)); dp[0][0] = 0; for (int p = 0; p < size(a); p++) { for (int i = x; i >= 0; i--) { for (int j = y; j >= 0; j--) { if (i - a[p] >= 0) maxeq(dp[i][j], dp[i - a[p]][j] + 1); if (j - b[p] >= 0) maxeq(dp[i][j], dp[i][j - b[p]] + 1); } } } int res = 0; for (int i = 0; i <= x; i++) { for (int j = 0; j <= y; j++) { maxeq(res, dp[i][j]); } } return res; } int subtask3(int x, int y, vector<int> a, vector<int> b) { int res = 0; vector<int> new_a; for (int i = 0; i < ssize(b); i++) { if (b[i]) new_a.push_back(a[i]); else res++; } a = new_a; ranges::sort(a); for (auto r : a) { if (x - r < 0) break; x -= r; res++; } return res; } int subtask4(int x, int y, vector<int> a, vector<int> b) { int res = 0; ranges::sort(a); for (auto r : a) { if (x - r < 0) break; x -= r; res++; } int av = size(b) - res; int c = min(av, y / b[0]); // cerr << res << " " << av << " " << y / b[0] << "\n"; return res + c; } int find_maximum_unique(int x, int y, vector<int> a, vector<int> b) { int n = size(a); int res = 0; if (x <= 500 && y <= 500 && n <= 200) { res = dp_solve(x, y, a, b); cerr << res << " [12]\n"; } else if (y == 0) { res = subtask3(x, y, a, b); } else { res = subtask4(x, y, a, b); } return res; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...