Hi,
AC Code (2.5s): 56017075 (Or here if you can't view gym submissions)
TLE (over 30s, tested on custom private group contest with custom TL): 56017081 (Or here)
Regardless of the problem and its solution, the ONLY line that changes between the 2 submissions is the way I check if the state was calculated before or not. When I check it using if (ret != -1)
it gives TLE, but when I check it using visit array is (visit[i][j] == vid)
it passes. I don't even remove the extra memset for memoization array in each testcase when using the visit array. Why would this very small change result in that huge difference in time?
Auto comment: topic has been updated by Bekh (previous revision, new revision, compare).
clearly if u check
if (ret != -1)
,solve(i,j)
will be computed many times ifsolve(i,j)
is indeed -1 even if you have visited it before? So there's no time complexity guarantee in the state, and therefore if most ofsolve(i,j)
is -1, you solution is as slow as bruteforce?Zzz. Thank you. I just noticed that. Completely forgot that the input got negative values even tho it was included in sample.