제출 #1169210

#제출 시각아이디문제언어결과실행 시간메모리
1169210TlenekWodoruJelly Flavours (IOI20_jelly)C++20
100 / 100
277 ms153000 KiB
#include "jelly.h" #include <bits/stdc++.h> using namespace std; int find_maximum_unique(int x, int y, vector<int> a, vector<int> b) { const int n=a.size(); vector<pair<int,int>>tab(n+1); vector<vector<int>>dp(n+2,vector<int>(x+2)); vector<vector<int>>dp2(n+2,vector<int>(y+2)); for(int i=1;i<=n;i++) { tab[i]={a[i-1],b[i-1]}; } sort(tab.begin()+1,tab.end()); for(int i=1;i<=n;i++) { for(int j=0;j<=x;j++) { dp[i][j]=dp[i-1][j]+tab[i].second; if(j>0) { dp[i][j]=min(dp[i][j],dp[i][j-1]); } if(j>=tab[i].first) { dp[i][j]=min(dp[i][j],dp[i-1][j-tab[i].first]); } } } for(int i=n;i>=1;i--) { for(int j=0;j<=y;j++) { dp2[i][j]=dp2[i+1][j]; if(j>0) { dp2[i][j]=max(dp2[i][j],dp2[i][j-1]); } if(j>=tab[i].second) { dp2[i][j]=max(dp2[i][j],dp2[i+1][j-tab[i].second]+1); } } } int wyn=0; for(int i=0;i<=n;i++) { if(dp[i][x]>y){continue;} wyn=max(wyn,i+dp2[i+1][y-dp[i][x]]); } return wyn; }
#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...