➤ Problem Link : BABTWR
👉 Hint : edit please
✅ C++ Solution :
#include<bits/stdc++.h>
using namespace std;
int main()
{
while(1)
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int n;
cin>>n;
if(n==0)
break;
int ht[n],wd[n],dpt[n];
long long int sum=0;
for(int i=0;i<n;i++)
{
cin>>ht[i]>>wd[i]>>dpt[i];
sum+=ht[i]+wd[i]+dpt[i];
}
vector<pair<int,int > >base;
vector<int> h;
for(int i=0;i<n;i++)
{
base.push_back(make_pair(wd[i],dpt[i]));
h.push_back(ht[i]);
base.push_back(make_pair(wd[i],ht[i]));
h.push_back(dpt[i]);
base.push_back(make_pair(ht[i],dpt[i]));
h.push_back(wd[i]);
base.push_back(make_pair(ht[i],wd[i]));
h.push_back(dpt[i]);
base.push_back(make_pair(dpt[i],wd[i]));
h.push_back(ht[i]);
base.push_back(make_pair(dpt[i],ht[i]));
h.push_back(wd[i]);
}
bool dp[sum+1][h.size()+1];
memset(dp,true,sizeof(dp));
int height=0;
for(int i=1;i<=sum;i++)
{
for(int j=0;j<h.size();j++)
{
for(int k=0;k<h.size();k++)
{
if(i==h[j] || (i>=h[j] && dp[i-h[j]][k]==true && base[k].first<base[j].first && base[k].second<base[j].second))
{
dp[i][j]=true;
height=max(height,i);
break;
}
dp[i][j]=false;
}
}
}
cout<<height<<endl;
}
}
Thank you for your patience reading. If you enjoyed this post, I’d be very grateful if you’d help it spread by emailing it to a friend, or sharing it on Whatsapp or Facebook.
😇Happy Learning!!
