Please help!!
I have used memoization in this problem. Not able to figure out why it is giving wrong answer.
include <bits/stdc++.h>
using namespace std;
define endl (“\n”)
define pi (3.141592653589)
define mod 1e9 + 7
define ll long long
define vi vector
define vl vector
define pb push_back
define mp make_pair
define ff first
define ss second
define all(c) c.begin(), c.end()
define rrep(i, n) for (int i = n - 1; i >= 0; i–)
define rep(i, n) for (int i = 0; i < n; i++)
define loop(i, a, b) for (int i = a; i <= b; i++)
define fast
ios_base::sync_with_stdio(0), cin.tie(0);
define inf INT_MAX
ll solve(vector<vector> &arr,int n,int i,int j,vector<vector> &dp){
if(i>n || i<1 || j>n || j<1){
return 0;
}
if(i==n && j==n){
return 0;
}
if(dp[i][j] != inf){
return dp[i][j];
}
ll case1 = solve(arr,n,i+1,j,dp);
ll case2 = solve(arr,n,i,j+1,dp);
ll result = max(case1,case2) + arr[i][j];
return dp[i][j] = result;
}
int main()
{
fast int t;
cin >> t;
cout<<fixed<<setprecision(8);
while (t–)
{
int n;
cin>>n;
vector<vector<int>> arr(n+1,vector<int>(n+1,0));
loop(i,1,n){
loop(j,1,n){
cin>>arr[i][j];
}
}
vector<vector<ll>> dp(n+1,vector<ll>(n+1,inf));
ll maxSum = solve(arr,n,1,1,dp);
if(maxSum < 0){
cout<<"Bad Judges"<<endl;
}else{
long double res = 1.0*maxSum/(2*n-3);
cout<<res<<endl;
}
}
return 0;
}