Задача о количестве вещества
Добавлено: 30 окт 2008, 11:29
В результате проведения эксперимента за один раз образуется заранее неизвестное количество некоторого вещества. Эксперимент проводят N (3<=N<=10000) раз. Полученное вещество в порядке проведения экспериментов распределяют по контейнерам, общим количеством K (2<=K<=400, K<=N).
Необходимо таким образом распределить вещество по контейнерам, чтобы общее количество вещества в наиболее заполненном контейнере было наименьшим.
Формат входных данных.
Первая строка входного файла SUBSTAN.DAT содержит два натуральных чисел N (3<=N<=10000) но K (2<=K<=400, K<=N). Во второй строке находятся N целых положительных чисел, каждое из которых означает количество полученного вещества в соответствующем эксперименте. Все числа между собой разделены пробилами.
Формат выходных данных.
Единственная строка исходного файла SUBSTAN.SOL должен содержать одно целое число общее количество вещества в наиболее заполненном контейнере.
Пример.
SUBSTAN.DAT
7 2
2 5 1 11 2 3 2
SUBSTAN.SOL
18
Так как возможны варианты размещения в контейнерах:
1. 2=2 5+1+11+2+3+2=24
2. 2+5=7 1+11+2+3+2=19
3. 2+5+1=8 11+2+3+2=18
4. 2+5+1+11=19 2+3+2=7
5. 2+5+1+11+2=21 3+2=5
6. 2+5+1+11+2+3=24 2=2
При этом самый заполненный контейнер будет иметь наименьшее кол-во вещества при разделении №3.
Жадным алгоритмом проходит не все тесты, а полным перебором надо 2^400(кажется) вариантов. Буду благодарен за возможный вариант решения задачи (желательно на Паскале).
Необходимо таким образом распределить вещество по контейнерам, чтобы общее количество вещества в наиболее заполненном контейнере было наименьшим.
Формат входных данных.
Первая строка входного файла SUBSTAN.DAT содержит два натуральных чисел N (3<=N<=10000) но K (2<=K<=400, K<=N). Во второй строке находятся N целых положительных чисел, каждое из которых означает количество полученного вещества в соответствующем эксперименте. Все числа между собой разделены пробилами.
Формат выходных данных.
Единственная строка исходного файла SUBSTAN.SOL должен содержать одно целое число общее количество вещества в наиболее заполненном контейнере.
Пример.
SUBSTAN.DAT
7 2
2 5 1 11 2 3 2
SUBSTAN.SOL
18
Так как возможны варианты размещения в контейнерах:
1. 2=2 5+1+11+2+3+2=24
2. 2+5=7 1+11+2+3+2=19
3. 2+5+1=8 11+2+3+2=18
4. 2+5+1+11=19 2+3+2=7
5. 2+5+1+11+2=21 3+2=5
6. 2+5+1+11+2+3=24 2=2
При этом самый заполненный контейнер будет иметь наименьшее кол-во вещества при разделении №3.
Жадным алгоритмом проходит не все тесты, а полным перебором надо 2^400(кажется) вариантов. Буду благодарен за возможный вариант решения задачи (желательно на Паскале).