➤ Problem Link : ADAGAME
👉 Hint : 3D DP with 3rd dimension representing player with turn
✅ C++ Solution :
#include<bits/stdc++.h>
using namespace std;
int dp[10000][101][2];
int v;
int AdaGame(int n,int m,int t)
{
int i;
if(m==0)
{
if(n>v)
return 1;
return 0;
}
if(dp[n][m][t]!=-1)
return dp[n][m][t];
if(t==0)
dp[n][m][t]=0;
else
dp[n][m][t]=1;
string s="0000";
s+=to_string(n);
for(int k=0;k<4;k++)
{
i=s.length()-1-k;
if(s[i]-'0'<9)
{
s[i]+=1;
if(t==0)
{
dp[n][m][t]=max(dp[n][m][t],AdaGame(stoi(s),m-1,1));
}
else
{
dp[n][m][t]=min(dp[n][m][t],AdaGame(stoi(s),m-1,0));
}
s[i]-=1;
}
else
{
s[i]-=9;
if(t==0)
{
dp[n][m][t]=max(dp[n][m][t],AdaGame(stoi(s),m-1,1));
}
else
{
dp[n][m][t]=min(dp[n][m][t],AdaGame(stoi(s),m-1,0));
}
s[i]+=9;
}
}
return dp[n][m][t];
}
int main()
{
int t;
cin>>t;
while(t--)
{
int n,m;
string s;
cin>>n>>m;
v=n;
memset(dp,-1,sizeof(dp));
bool b=AdaGame(n,m,0);
if(b)
cout<<"Ada"<<endl;
else
cout<<"Vinit"<<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!!
