Задача «Гистограмма»
2 секунды и 64 Мб памяти
В ходе изучения темы "Редактор электронных таблиц MS Excel" учитель информатики дал школьнику Пете задание изготовить плакат, изображающий простую гистограмму, состоящую из N столбцов разного цвета с заданными высотами hl,h2,..., hN сантиметров. В галантерейном магазине продаются ленты М (N <М) разных цветов с ценами с1, с2,..., см копеек за один сантиметр, каждую ленту можно использовать для изготовления не более одного столбца диаграммы.
Вам нужно так выбрать N лент разного цвета, чтобы суммарная стоимость всех купленных отрезов лент была минимальной.
Формат входного файла input.txt
В первой строке записаны два целых числа N и М(1<=N<=М<=1000) - количество столбцов в гистограмме и количество цветов лент, имеющихся в продаже. Во второй строке записаны N различных целых чисел h1, h2,..., hN - высоты столбцов гистограммы в сантиметрах. Третья строка содержит М различных целых чисел сг, с2,..., см - цены лент в копейках за сантиметр. Все числа в каждой строке записаны через пробел и находятся в диапазоне [1; 1000].
Формат выходного файла output.txt
Первая строка содержит одно число - суммарную стоимость купленных отрезов лент. Во второй строке записаны через пробел номера выбранных лент в том порядке, в каком эти ленты будут следовать в гистограмме.
INPUT.TXT |
35
10 30 20 200 50 100 400 30 |
OUTPUT.TXT |
2900 352 |
Разбор задачи №4 "Гистограмма"
Камско-Устьинского муниципального района РТ
Упорядочим массив H по убыванию, а массив С - по возрастанию. При этом нужно учитывать 2 тонкости:
1)сами массивы нужно сохранить, поэтому сортируем массив индексов и потом работаем с индексам.
2) "Хвост" массива С с номерами больше N сортировать не нужно. Затем найдём сумму попарных произведений N первых элементов отсортированных массивов. При выводе номеров выбранных лент нужно аккуратно работать с индексами.
В нашем районе один из участников предложил (но не осуществил) идею: проходим массивы, в Н находим наибольшее число, а в С - наименьшее, к текущей сумме прибавляем их произведение, сами числа в массивах заменяем в Н нулём, в С - большу 1000, в дополнительном массиве запоминаем найденный индекс из массива С с индексом, найденным в массиве С. По идее должно работать, но не знаю, уложится ли по времени.