제출 #1169457

#제출 시각아이디문제언어결과실행 시간메모리
1169457Szymon_PilipczukJelly Flavours (IOI20_jelly)C++20
100 / 100
83 ms77384 KiB
#include <bits/stdc++.h> using namespace std; int find_maximum_unique(int x,int y,vector<int> a,vector<int> b) { int n = a.size(); vector<pair<int,int>> mc(n); for(int i = 0;i<n;i++) { mc[i] = {a[i],b[i]}; } sort(mc.begin(),mc.end()); int dp[n][x+1]; for(int i = 0;i<n;i++) { for(int j = 0;j<=x;j++) { if(i == 0) { if(j >= mc[i].first) { dp[i][j] = 0; } else { dp[i][j] = mc[i].second; } } else { dp[i][j] = dp[i-1][j] + mc[i].second; if(j >= mc[i].first) { dp[i][j] = min(dp[i][j],dp[i-1][j-mc[i].first]); } } } } int ans = 0; for(int i =0 ;i<n;i++) { int cy = y; cy -= dp[i][x]; if(cy >= 0) { vector<int> r; for(int j = i+1;j<n;j++) { r.push_back(mc[j].second); } sort(r.begin(),r.end()); int cans = 0; for(int j = 0;j<r.size();j++) { if(cy >= r[j]) { cy-=r[j]; cans++; } } ans = max(ans,cans+i+1); } } int cy = y; vector<int> r; for(int j = 0;j<n;j++) { r.push_back(mc[j].second); } sort(r.begin(),r.end()); int cans = 0; for(int j = 0;j<r.size();j++) { if(cy >= r[j]) { cy-=r[j]; cans++; } } ans = max(ans,cans); 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...