# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
433483 | 2021-06-19T21:18:41 Z | JUANDI321 | Jelly Flavours (IOI20_jelly) | C++17 | 0 ms | 0 KB |
#include "jelly.h" #include <vector> #include <algorithm> #include <iostream> using namespace std; vector<int> aa(2010), bb(2010); vector<int> ax(11), by(11); int nn; int memo[2020][500][500]; int dp(int x, int y, int i, int ca) { if(i == nn && ca == 1)return-1; if(i == nn)return 0; if(x <0 || y<0)return 0; if(memo[i][x][y] != -1)return memo[i][x][y]; return memo[i][x][y]= max(dp(x-aa[i], y, i+1, 1)+1, max(dp(x, y-bb[i], i+1, 1)+1, dp(x, y, i+1, 0))); } int find_maximum_unique(int x, int y, vector<int> a, vector<int> b) { int n = a.size(); nn = n; for(int i = 0; i<n; i++) { aa[i]=a[i]; bb[i]=b[i]; }//cout<<"hola"<<endl; for(int i = 0; i<2010; i++) for(int j = 0; j<500; j++) for(int h = 0; h<500; h++)memo[i][j][h]=-1; int c = 0; c = dp(x, y, 0); return c; }