Вероятно, существует множество методов для оптимизации этого алгоритма, но вот пара простых:
Во-первых, вам не нужен окончательный цикл по числам вообще:
for (l = -size; l <= size; l++)
...
Это потому, что первые три числа уже определены, поэтому существует только одно возможное число, которое может сделать все 4 сложенными в ноль.Все, что вам нужно сделать, это выяснить, что это за число, и проверить, находится ли оно в диапазоне от -n до + n.
int l = 0 - (i+j+k);
if (-l >= -size && l <= size)
....
Во-вторых, третий цикл во многих случаях может быть сокращен, например, если i и j оба имеют одинаковый размер, то единственное возможное значение k, которое может привести к добавлению всех нулей к четырем, это+ размер.Используя эту идею, мы можем наложить дополнительные ограничения на этот цикл, сократив его в значительном числе случаев.
Эти две оптимизации должны привести к очень значительному ускорению этого алгоритма.