제출 #1169217

#제출 시각아이디문제언어결과실행 시간메모리
1169217niepamietamhaslaJelly Flavours (IOI20_jelly)C++20
35 / 100
101 ms156488 KiB
#include <bits/stdc++.h> #include "jelly.h" using namespace std; typedef long long ll; const int MAXN = 2e3 + 5; const int MAXX = 1e4 + 5; int dppref[MAXN][MAXX]; int dpsuff[MAXN][MAXX]; int find_maximum_unique(int x, int y, vector<int> a, vector<int> b){ vector<pair<int,int>> c; int n = a.size(); for(int i = 0; i < n; ++i){ c.push_back({a[i], b[i]}); } sort(c.begin(),c.end()); // for(auto u : c){ // cout << u.first << " " << u.second << " u\n"; // } ll s = 0; for(int i = 1; i <= n; ++i){ s += b[i]; dppref[i][0] = s; } for(int i = 1; i <= n; ++i){ for(int j = 1; j <= x; ++j){ dppref[i][j] = dppref[i-1][j] + c[i-1].second; //cout << i << " " << j << " " << dppref[i][j] << " prefb4\n"; //cout << j << " " << c[i-1].first << "\n"; if(j >= c[i-1].first) dppref[i][j] = min(dppref[i][j], dppref[i-1][j - c[i-1].first]); //cout << i << " " << j << " " << dppref[i][j] << " pref\n"; } } for(int i = n-1; i >= 0; --i){ for(int j = 1; j <= y; ++j){ dpsuff[i][j] = dpsuff[i+1][j]; if(j >= c[i].second){ dpsuff[i][j] = max(dpsuff[i][j], dpsuff[i+1][j - c[i].second] + 1); } } } int w = 0; for(int i = 0; i <= n; ++i){ if(dppref[i][x] > y) continue; //cout << i << " dp " << dppref[i][x] << " y " << y << " suff " << dpsuff[i][y - dppref[i][x]] << " db\n"; w = max(w, i + dpsuff[i][y - dppref[i][x]]); } return w; }
#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...