printДинамическое программирование

printКопилка

Ограничения: время – 2s/4s, память – 32MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод copy
Послать решение Blockly Посылки Темы Где Обсудить (0)

Задан вес `E` пустой копилки и вес `F` копилки с монетами. В копилке могут находиться монеты `N` видов, для каждого вида известна ценность `P_i` и вес `W_i` одной монеты. Найти минимальную и максимальную суммы денег, которые могут находиться в копилке.
Ограничения: `1\ ≤\ E\ ≤\ F\ ≤\ 10\ 000`, `1\ ≤\ N\ ≤\ 500`, `1\ ≤\ P_i\ ≤\ 50\ 000`, `1\ ≤\ "Wi"\ ≤\ 10\ 000`, все числа целые.
Ввод
В первой строке находятся числа `E` и `F`, во второй – число `N`, в следующих `N` строках – по два числа, `P_i` и `W_i`.
Вывод
Выводятся два числа через пробел – минимальная и максимальная суммы. Если копилка не может иметь точно заданный вес при условии, что она наполнена монетами заданных видов, – вывести "This is impossible.".

Пример ввода 1

1000 1100
2        
1 1      
5 2      

Пример вывода 1

100 250

Пример ввода 2

1000 1010
2        
6 3      
2 2        

Пример вывода 2

10 16

Пример ввода 3

1000 2000
1        
10 3     

Пример вывода 3

This is impossible.
Источник: CERC, 1999, Меньшиков
loading