Submission #1193742

#TimeUsernameProblemLanguageResultExecution timeMemory
1193742chaeryeongJelly Flavours (IOI20_jelly)C++20
100 / 100
135 ms152720 KiB
#include "jelly.h" #include <bits/stdc++.h> using namespace std; const int inf = 1e9; int find_maximum_unique(int x, int y, std::vector<int> a, std::vector<int> b) { vector <pair <int, int>> c; for (int i = 0; i < (int)a.size(); i++) { c.push_back({a[i], b[i]}); } sort(c.begin(), c.end()); int n = (int)c.size(); int pre[n + 1][x + 1] = {}, suff[n + 2][y + 1] = {}; for (int i = 1; i <= n; i++) { for (int j = 0; j <= x; j++) { pre[i][j] = inf; pre[i][j] = pre[i - 1][j] + c[i - 1].second; if (c[i - 1].first <= j) { pre[i][j] = min(pre[i][j], pre[i - 1][j - c[i - 1].first]); } } } for (int i = n; i >= 1; i--) { for (int j = 0; j <= y; j++) { suff[i][j] = suff[i + 1][j]; if (c[i - 1].second <= j) { suff[i][j] = max(suff[i][j], suff[i + 1][j - c[i - 1].second] + 1); } } } int mx = 0; for (int i = 0; i <= n; i++) { for (int j = 0; j <= x; j++) { if (pre[i][j] <= y) { mx = max(mx, i + suff[i + 1][y - pre[i][j]]); } } } return mx; }
#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...