Submission #302390

#TimeUsernameProblemLanguageResultExecution timeMemory
302390chirathnirodhaJelly Flavours (IOI20_jelly)C++17
11 / 100
1458 ms26592 KiB
#include "jelly.h"
#include <vector>
#include<bits/stdc++.h>
using namespace std;

vector<int> aprice;
vector<int> bprice;
int dp[501][501][13];
int knapsack(int x,int y,int ind){
    if(ind==0 || (x==0 && y==0)){
        dp[x][y][ind]=0;
        return dp[x][y][ind]=0;
    }
    if(dp[x][y][ind]!=-1)return dp[x][y][ind];
    if(x-aprice[ind-1]>=0 && y-bprice[ind-1]>=0){
        dp[x][y][ind]=max(max(knapsack(x-aprice[ind-1],y,ind-1),knapsack(x,y-bprice[ind-1],ind-1))+1,knapsack(x,y,ind-1));
    }
    else if(x-aprice[ind-1]>=0){
        dp[x][y][ind]=max(knapsack(x-aprice[ind-1],y,ind-1)+1,knapsack(x,y,ind-1));
    }
    else if(y-bprice[ind-1]>=0){
        dp[x][y][ind]=max(knapsack(x,y-bprice[ind-1],ind-1)+1,knapsack(x,y,ind-1));
    }
    else dp[x][y][ind]=knapsack(x,y,ind-1);
    return dp[x][y][ind];
}
int find_maximum_unique(int x, int y, vector<int> a, vector<int> b) {
	int n = a.size();
  	for(int i=0;i<=x;i++)for(int j=0;j<=y;j++)for(int k=0;k<=n;k++)dp[i][j][k]=-1;
	aprice=a;
	bprice=b;
	return knapsack(x,y,n);
}
#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...