Submission #433313

#TimeUsernameProblemLanguageResultExecution timeMemory
433313Tiago_MarquesJelly Flavours (IOI20_jelly)C++17
100 / 100
268 ms304752 KiB
#include "jelly.h" #include <bits/stdc++.h> using namespace std; typedef long long int ll; typedef pair<ll, ll> ii; #define REP(i, a, b) for (ll i=a; i<b; i++) #define fs first #define sd second int find_maximum_unique(int x, int y, std::vector<int> a, std::vector<int> b) { int n = a.size(); ii c[n]; REP(i, 0, n) { c[i].fs = a[i]; c[i].sd = b[i]; } sort (c, c+n); ll adp[n+1][x+1] = {}, bdp[n+1][y+1] = {}; REP(i, 1, n+1) REP(j, 0, x+1) { adp[i][j] = adp[i-1][j] + c[i-1].sd; if (j >= c[i-1].fs) adp[i][j] = min (adp[i][j], adp[i-1][j - c[i-1].fs]); } for (ll i=n-1; i>=0; i--) REP(j, 0, y+1) { bdp[i][j] = bdp[i+1][j]; if (j >= c[i].sd) bdp[i][j] = max (bdp[i][j], bdp[i+1][j - c[i].sd] + 1); } ll ans = 0; REP(i, 0, n+1) { ll falta = y - adp[i][x]; if (falta >= 0) ans = max (ans, i + bdp[i][falta]); } 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...