dp
to store the maximum length of an arithmetic subsequence ending with each element.answer
to 1, which is the minimum length of any subsequence.arr[i]
in the array.before_a
as the length of the longest subsequence ending with arr[i] - difference
.
arr[i] - difference
is in dp
, before_a = dp[arr[i] - difference]
.before_a = 0
.dp[arr[i]]
to before_a + 1
.answer
to the maximum of answer
and dp[arr[i]]
.answer
.