Submission #1212987

#TimeUsernameProblemLanguageResultExecution timeMemory
1212987julia_08Jelly Flavours (IOI20_jelly)C++20
100 / 100
122 ms157104 KiB
#include "jelly.h" #include <bits/stdc++.h> using namespace std; const int MAXN = 2e3 + 10; const int MAXC = 1e4 + 10; pair<int, int> jellies[MAXN]; int dp_1[MAXN][MAXC], dp_2[MAXN][MAXC]; int find_maximum_unique(int x, int y, vector<int> a, vector<int> b){ int n = a.size(); for(int i=1; i<=n; i++) jellies[i] = {a[i - 1], b[i - 1]}; sort(jellies + 1, jellies + n + 1); for(int i=1; i<=n; i++){ for(int j=0; j<=y; j++){ dp_1[i][j] = dp_1[i - 1][j]; if(jellies[i].second <= j) dp_1[i][j] = max(dp_1[i][j], dp_1[i - 1][j - jellies[i].second] + jellies[i].first); } } for(int i=n; i>=1; i--){ for(int j=0; j<=y; j++){ dp_2[i][j] = dp_2[i + 1][j]; if(jellies[i].second <= j) dp_2[i][j] = max(dp_2[i][j], dp_2[i + 1][j - jellies[i].second] + 1); } } int ans = 0, sum = 0; for(int i=1; i<=n; i++){ sum += jellies[i].first; for(int j=0; j<=y; j++){ if(sum - dp_1[i][j] <= x){ ans = max(ans, i + dp_2[i + 1][y - j]); } } } return ans; }
#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...