#include <bits/stdc++.h>
//#include "jelly.h"
using namespace std;
typedef long long ll;
#define st first
#define nd second
#define pb push_back
const int maxn = 2003;
int dp[203][503][503];
int dp2[1003][1003];
int find_maximum_unique(int x, int y, vector<int> a, vector<int> b) {
int n = a.size();
bool bibj = 1,aibi = 1;
for(int i=1;i<n;i++){
if(b[i] != b[i-1])
bibj = 0;
}
for(int i=0;i<n;i++){
if(a[i] != b[i])
aibi = 0;
}
if(aibi){
sort(a.begin(),a.end());
int start = 0,wyn = 0;
for(int i=0;i<n;i++){
if(a[i] == 0){
start++;
}
}
for(int i=0;i<=x;i++){
for(int j=0;j<=y;j++){
if(dp2[i][j] == 0){
dp2[i][j] = start;
}
if(i>0)
dp2[i][j] = max(dp2[i][j],dp2[i-1][j]);
if(j>0)
dp2[i][j] = max(dp2[i][j],dp2[i][j-1]);
if(i < x && i + a[dp2[i][j] + 1 - 1] <= x){
dp2[i+a[dp2[i][j] + 1 - 1]][j] = max(dp2[i+a[dp2[i][j] + 1 - 1]][j],dp2[i][j]+1);
}
if(j < y && j + a[dp2[i][j] + 1 - 1] <= y){
dp2[i][j+a[dp2[i][j] + 1 - 1]] = max(dp2[i][j+a[dp2[i][j] + 1 - 1]],dp2[i][j]+1);
}
wyn = max(wyn,dp2[i][j]);
//cout<<i<<" "<<j<<" "<<dp2[i][j]<<"\n";
}
}
return wyn;
}
if(y==0){
int wyn = 0;
vector<pair<int,int>> vect;
for(int i=0;i<n;i++){
vect.pb({a[i],b[i]});
}
sort(vect.begin(),vect.end());
for(int i=0;i<n;i++){
if(vect[i].nd == 0){
wyn++;
continue;
}
if(vect[i].st > x)
continue;
x -= vect[i].st;
wyn++;
}
return wyn;
}
if(bibj){
int wartosc = b[0];
int wyn = 0;
sort(a.begin(),a.end());
for(auto i : a){
if(x >= i){
wyn++;
x-=i;
continue;
}
if(y >= wartosc){
wyn++;
y -= wartosc;
continue;
}
break;
}
return wyn;
}
for(int i=1;i<=n;i++){
for(int j=0;j<=x;j++){
for(int k=0;k<=y;k++){
dp[i][j][k] = dp[i-1][j][k];
if(j-a[i-1] >= 0)
dp[i][j][k] = max(dp[i][j][k],dp[i-1][j-a[i-1]][k]+1);
if(k-b[i-1] >= 0)
dp[i][j][k] = max(dp[i][j][k],dp[i-1][j][k-b[i-1]]+1);
}
}
}
return dp[n][x][y];
}
/*
int main(){
int odp = find_maximum_unique(10,4,{1,4,9},{1,4,9});
cout<<odp<<"\n";
return 0;
}
*/
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |