제출 #1199704

#제출 시각아이디문제언어결과실행 시간메모리
119970412345678Jelly Flavours (IOI20_jelly)C++20
100 / 100
174 ms157044 KiB
#include "jelly.h" #include <bits/stdc++.h> using namespace std; const int nx=2e3+5, kx=1e4+5; int dp[nx][kx], dpr[nx][kx], res; vector<pair<int, int>> v; int find_maximum_unique(int x, int y, std::vector<int> a, std::vector<int> b) { int n = a.size(); v.push_back({INT_MIN, 0}); for (int i=0; i<n; i++) v.push_back({a[i], b[i]}); sort(v.begin(), v.end()); for (int i=1; i<=n; i++) { for (int j=0; j<kx; j++) { // dp[i][j]=minimum money on a given that use j on b to fill 1->i dp[i][j]=dp[i-1][j]+v[i].first; if (j>=v[i].second) dp[i][j]=min(dp[i][j], dp[i-1][j-v[i].second]); } } for (int i=n; i>=1; i--) { for (int j=0; j<kx; j++) { dpr[i][j]=dpr[i+1][j]; if (j>=v[i].second) dpr[i][j]=max(dpr[i][j], dpr[i+1][j-v[i].second]+1); } } for (int i=0; i<=n; i++) { for (int j=0; j<=y; j++) { if (dp[i][j]<=x) res=max(res, i+dpr[i+1][y-j]); } } 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...