➤ Problem Link : LISA
👉 Hint : edit please
✅ C++ Solution :
#include<bits/stdc++.h>
using namespace std;
#define ll long long int
ll dp[105][105];
ll small[105][105];
ll op(ll x,ll y,char op)
{
switch(op)
{
case '*':
return x*y;
case '+':
return x+y;
default :
return -1;
}
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int k;
cin>>k;
while(k--)
{
string s;
cin>>s;
memset(dp,0,sizeof(dp));
memset(small,0,sizeof(small));
for(int i=0;i<s.length();i+=2)
{
dp[i][i]=s[i]-'0';
small[i][i]=s[i]-'0';
}
int i,j;
for(int k=2;k<s.length();k+=2)
{
for(i=0,j=k;i<s.length(),j<s.length();i+=2,j+=2)
{
dp[i][j]=-1;
small[i][j]=INT_MAX;
for(int ind=i;ind<=j-2;ind+=2)
{
dp[i][j]=max(dp[i][j],op(dp[i][ind],dp[ind+2][j],s[ind+1]));
small[i][j]=min(small[i][j],op(small[i][ind],small[ind+2][j],s[ind+1]));
}
}
}
cout<<dp[0][s.length()-1]<<" "<<small[0][s.length()-1]<<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!!
