a[0]+b[n-1]<c
, то a[0] - слишком маленькое. Даже с максимальным b оно дает слишком маленкую сумму, а значит любая пара с a[0] не наберёт искомую сумму, ведь остальные пары еще меньше. Значит, можно a[0] выкинуть из рассмотрения. Точно также можно выкинуть b[n-1], если сумма слишком большая.Допустим в верхнем левом примере поменять две верхние вершины (являющиеся условным дном треугольника) местами?
table[i]
Тут дело в том, что вообще нельзя эти 7 рублей скидки раскидать по товарам в группах 5 и 3, потому что 7 нельзя представить в виде суммы троек и пятерок.
Понятно, что это вырожденный случай, но в вашей задаче должно быть как-то специфицированно, что в этом случае делать и если он невозможен, то какие возможны.