Help needed in DP problem Magic Rankings (MGCRNK)

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;

}

@harsh_1701
Plzz send the problem link

https://www.codechef.com/DEC12/problems-old/MGCRNK