Я думаю, что в этой строке большой массив выделен в стеке:
lli dp[n + 1] = {0};
Это, вероятно, причина segfault.Вы можете изменить его на std::vector
.Например:
std::vector<lli> dp(n + 1, 0);
В качестве альтернативы вы можете сделать его статическим или выделить его с помощью new[]
(возможно, только один раз для всех тестов, чтобы минимизировать накладные расходы, и в этом вы должны помнить, чтобы очистить егоправильно с delete[]
).