i have got proper answer in every test case but still getting wa when i am submitting this code, please check the code and tell me what i am doing wrong
#include <bits/stdc++.h>
#define sf(a) scanf("%lld", &a)
#define pf(a) printf("%lld\n", a)
#define ll long long
#define loop(i,a) for (int i = 0; i < a; i++)
#define inc(i,a,std) for (int i = std; i < a: i++)
using namespace std;
ll mem[60][60];
ll letter[60][60];
ll maximum(ll a, ll b, ll c, ll d, ll e, ll f, ll g, ll h) {
return max(max(max(max(max(max(max(a, b), c), d), e), f), g), h);
}
ll path(ll x, ll y, ll i, ll h, ll w) {
if (x < 0 || y < 0) {
return 0;
}
if (x >= h || y >= w) {
return 0;
}
if (mem[x][y] != -1) {
return mem[x][y];
}
if (letter[x][y] != 65 + i) {
return 0;
}
i++;
return (mem[x][y] = (maximum(path(x - 1, y, i, h, w), path(x - 1, y - 1, i, h, w), path(x - 1, y + 1, i, h, w), path(x, y - 1, i, h, w), path(x, y + 1, i, h, w), path(x + 1, y -1, i, h, w), path(x + 1, y, i, h, w), path(x + 1, y + 1, i, h, w)))) + 1;
}
int main()
{
ll h;
ll w;
char str[100];
sf(h);
sf(w);
ll count = 0;
while (true) {
if (h == 0 && w == 0) {
break;
}
count++;
loop(i, h) {
scanf("%s", str);
loop(j, w) {
letter[i][j] = str[j];
}
}
loop(i, h + 10) {
loop(j, w + 10) {
mem[i][j] = -1;
}
}
ll ans = 0;
loop(i, h) {
loop(j, w) {
if (letter[i][j] == 65) {
int a = path(i, j, 0, h, w);
if (ans < a) {
ans = a;
}
}
}
}
cout << "Case " << count << ": " << ans << endl;
sf(h);
sf(w);
}
return 0;
}