➤ Problem Link : SCUBADIV
👉 Hint : Use 3D DP
✅ C++ Solution :
#include<bits/stdc++.h>
using namespace std;
long long int dp[1001][22][80];
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int c;
cin>>c;
while(c--)
{
int n,t,a,o,nit;
cin>>t>>a;
cin>>n;
vector<pair<int,int> >vol;
int wt[n+1];
vol.reserve(n+1);
for(int i=1;i<=n;i++)
{
cin>>o>>nit>>wt[i];
vol[i]=make_pair(o,nit);
}
memset(dp,0,sizeof(dp));
int x,y;
for(int i=1;i<=n;i++)
{
for(int j=0;j<=t;j++)
{
for(int k=0;k<=a;k++)
{
if(j==0 && k==0)
continue;
if(i==1)
{
if(j<=vol[i].first && k<=vol[i].second)
dp[i][j][k]=wt[1];
else
dp[i][j][k]=INT_MAX;
}
else
{
x=j-vol[i].first;
y=k-vol[i].second;
if(x<0)
x=0;
if(y<0)
y=0;
dp[i][j][k]=min(dp[i-1][j][k],wt[i]+dp[i-1][x][y]);
}
}
}
}
cout<<dp[n][t][a]<<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!!
