Submission #1169467

#TimeUsernameProblemLanguageResultExecution timeMemory
1169467owieczkaJelly Flavours (IOI20_jelly)C++20
100 / 100
66 ms78664 KiB
#include "jelly.h" #include <bits/stdc++.h> using namespace std; int dp[2'002][10'010]; pair<int, int> tab[2'002]; pair<int, int> tb[2'002]; int find_maximum_unique(int x, int y, std::vector<int> a, std::vector<int> b) { int n = a.size(); for (int i = 0; i < n; i++) { tab[i+1] = {a[i], b[i]}; } sort(tab+1, tab+n+1); for (int i = 1; i <= n; i++) tb[i] = {tab[i].second, i}; sort(tb+1, tb+n+1); int ans = 0; for (int i = 0; i <= n; i++) { int m = INT_MAX; for (int a = 0; a <= x; a++) { m = min(dp[i][a], m); } int left = y - m; m = i; if (left < 0)goto here; for (int j = 1; j <= n; j++) { if (left < tb[j].first)break; if (tb[j].second > i) { left -= tb[j].first; m++; } } ans = max(m, ans); here: for (int a = 0; a <= x; a++) { dp[i+1][a] = dp[i][a] + tab[i+1].second; if (a >= tab[i+1].first) dp[i+1][a] = min(dp[i+1][a], dp[i][a-tab[i+1].first]); } } 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...