Страница: << 30 31 32 33 34 35 36 >> Отображать по:

На аллее перед зданием Министерства Обороны в ряд высажены \(n\) дубов. В связи с грядущим приездом главнокомандующего, было принято решение срубить несколько деревьев для придания аллее более милитаристического вида.

Внутренние распорядки министерства позволяют срубать дуб только в двух случаях:

* Если и ближайший дуб слева, и ближайший дуб справа строго ниже, чем данный дуб.

* Если и ближайший дуб слева, и ближайший дуб справа строго выше, чем данный дуб.

В частности, согласно этому правилу, нельзя срубить крайний левый и крайний правый дуб.

Министр хочет выработать такой план вырубки, чтобы в итоге осталось несколько дубов, высоты которых образуют неубывающую последовательность, то есть чтобы каждый дуб был не ниже, чем все дубы, стоящие слева от него. При этом, как человек любящий флору, министр хочет, чтобы было срублено минимальное возможное количество деревьев.

Помогите сотрудникам министерства составить оптимальный план вырубки аллеи или выяснить, что срубить дубы соответствующим образом невозможно.

Входные данные

Первая строка входного файла содержит целое число \(n\) — количество дубов, растущих на аллее (\(2\le n \le 200\)). Вторая строка содержит \(n\) чисел — высоты дубов, приведенные слева направо. Высоты дубов — положительные целые числа, не превышающие 1000.

Выходные данные

Если оставить последовательность дубов с неубывающими высотами невозможно, выходной файл должен содержать только одно число \(-1\).

В случае, если искомый план существует, в первую строку выходного файла выведите целое число \(m\) — минимальное количество дубов, которые необходимо срубить. В следующие \(m\) строк выведите оптимальный план вырубки деревьев — номера дубов в том порядке, в котором их следует срубать, по одному номеру на строке.

Дубы нумеруются слева направо натуральными числами от \(1\) до \(n\).

Если планов с наименьшим числом срубаемых дубов несколько, выведите любой из них.

Система оценки

В 50 баллов оценивается решение для случая, когда все высоты дубов попарно различны.

Примеры
Входные данные
5
3 2 4 8 5
Выходные данные
2
2
4
Входные данные
5
4 5 5 5 6
Выходные данные
0
Входные данные
6
1 1 3 3 2 2
Выходные данные
-1
Входные данные
6
400 300 310 300 310 500
Выходные данные
-1
ограничение по времени на тест
2.0 second;
ограничение по памяти на тест
64 megabytes

Часто для пробного тура на различных олимпиадах по информатике предлагается задача «A + B», в которой по заданным целым числам \(A\) и \(B\) требуется найти их сумму.

При проведении городской олимпиады по информатике председатель жюри решил сам подготовить тесты для такой задачи. Для этого он использовал свою оригинальную методику, которая заключалась в следующем: сначала готовятся предполагаемые правильные ответы, а затем подбираются входные данные, соответствующие этим ответам.

Пусть председатель жюри выбрал число \(C\), запись которого состоит из \(n\) десятичных цифр и не начинается с нуля. Теперь он хочет подобрать такие целые положительные числа \(A\) и \(B\), чтобы их сумма была равна \(C\), и запись каждого из них также состояла из \(n\) десятичных цифр и не начиналась с нуля. В дополнение к этому председатель жюри старается подобрать такие числа \(A\) и \(B\), чтобы каждое из них было красивым. Красивым в его понимании является число, запись которого не содержит двух одинаковых подряд идущих цифр. Например, число 1272 считается красивым, а число 1227 — нет.

Требуется написать программу, которая для заданного натурального числа \(C\) вычисляет количество пар красивых положительных чисел \(A\) и \(B\), сумма которых равна \(C\). Поскольку количество пар красивых чисел может быть большим, необходимо вывести остаток от деления этого количества на число \(10^9+7\).

Входные данные

Входной файл содержит одно целое положительное число \(C\). Число \(C\) не начинается с нуля. Количество цифр в записи числа \(С\) не превышает \(10000\).

Выходные данные

Выходной файл должен содержать одно целое число — остаток от деления количества искомых пар красивых чисел \(A\) и \(B\) на число \(10^9+7\).

Система оценивания

Правильные решения для тестов, в которых 1 ≤ C ≤ 999 (1 ≤ n ≤ 3), будут оцениваться из 25 баллов.

Правильные решения для тестов, в которых 1 ≤ C ≤ 999 999 (1 ≤ n ≤ 6), будут оцениваться из 50 баллов.

Несмотря на выделение отдельных групп тестов для различных длин числа C, на окончательную проверку будут приниматься только решения, правильно работающие для всех тестов из условия задачи.

Пояснения к тестам

Число 22 можно представить в виде суммы двузначных чисел тремя способами: 10 + 12, 11 + 11, 12 + 10. Способ 11 + 11 не подходит, поскольку число 11 не является красивым. Следовательно, ответ для числа 22 равен 2.

Число 200 можно представить в виде суммы трехзначных чисел единственным способом: 100 + 100. Этот способ не подходит, поэтому ответ для числа 200 равен 0.

Число 1000 нельзя представить в виде суммы четырехзначных чисел, поэтому ответ для числа 1000 аналогично равен 0.

Примеры
Входные данные
22
Выходные данные
2
Входные данные
200
Выходные данные
0
Входные данные
1000
Выходные данные
0
Входные данные
239
Выходные данные
16
ограничение по времени на тест
1.0 second;
ограничение по памяти на тест
256 megabytes

Оценив последние успехи вашего друга в экономическом отделе компании, владеющей сетью маршрутных такси, директор повысил его до главного диспетчера. Теперь друг указывает, на какой маршрут должна выходить та или иная маршрутка.

В автопарке компании есть \(n\) маршруток, \(i\)-ая маршрутка номинально вмещает \(a_i\) пассажиров. По договору с департаментом транспорта города компания обязана обслуживать \(m\) маршрутов. Накопленная статистика говорит, что оптимальнее всего, если \(j\)-ый маршрут обслуживает такси номинальной вместимостью \(b_j\) пассажиров. Каждая маршрутка приписывается не более чем к одному маршруту, каждому маршруту приписывается не более одной маршрутки.

Разумеется, каждый уважающий себя диспетчер при назначении маршруток на маршруты старается минимизировать потери, которые бывают следующими:

  • если \(i\)-ая маршрутка обслуживает \(j\)-ый маршрут, то компания теряет \(|a_i-b_j|\) у.е., так как чем меньше заполнено такси, тем больше не используются его возможности, а чем больше переполнено такси, тем чаще его приходится ремонтировать;
  • от каждой простаивающей маршрутки, то есть такой, которой не назначен ни один маршрут, компания несет убыток \(p\) у.е.;
  • компании приходится платить штраф \(q\) у.е. департаменту транспорта за каждый не обслуживаемый маршрут.

В очередной раз вы хотите помочь другу и написать для него программу, облегчающую ему работу.

Входные данные

В первой строке входного файла находятся четыре целых числа — \(n\), \(m\), \(p\), \(q\) (\(1\leq n,m \leq 10^3\), \(0 \leq p,q \leq 10^4\)).

Во второй строке через пробел указаны целые числа \(a_1\), ..., \(a_n\) (\(1\leq a_i \leq 10^4\)).

В третьей строке через пробел указаны целые числа \(b_1\), ..., \(b_m\) (\(1\leq b_j \leq 10^4\)).

Выходные данные

Выведите единственное число — минимально возможные потери компании.

Примечание

В примере 1 первая маршрутка назначена на второй маршрут с потерями \(|22-20|=2\) у.е., вторая маршрутка назначена на первый маршрут с потерями \(|12-11|=1\) у.е.. Итого: потери 3 у.е..

В примере 2 одна из маршруток назначается на единственный маршрут с нулевым штрафом, а вторая вынуждена простаивать. Итого: потери 100 у.е.

Примеры
Входные данные
2 2 100 100
22 12
11 20
Выходные данные
3
Входные данные
2 1 100 500
13 13
13 
Выходные данные
100
ограничение по времени на тест
3.5 second;
ограничение по памяти на тест
64 megabytes

Миша записывает 2 числа: n и m, а Маша должна разделить число n на m частей, не меняя порядок цифр, при этом Миша ещё требует, чтобы произведение полученных m чисел было максимально. Помогите Маше.

Входные данные

Входные данные содержат несколько тестовых случаев (не более 100000). Каждый тестовый случай расположен в отдельной строке и содержит 2 числа, разделённые пробелом: сначала n (1 ≤ n ≤ 1015), а потом m ().

Выходные данные

Для каждого тестового примера в отдельной строке выведите искомое максимальное произведение.

Примеры
Входные данные
12345 2
12345 3
Выходные данные
6170
2460
ограничение по времени на тест
0.5 second;
ограничение по памяти на тест
64 megabytes

Миша записывает 2 числа: n и m, а Маша должна разделить число n на m частей, не меняя порядок цифр, при этом Миша ещё требует, чтобы произведение полученных m чисел было максимально. Помогите Маше.

Входные данные

Входные данные содержат несколько тестовых случаев (не более 100000). Каждый тестовый случай расположен в отдельной строке и содержит 2 числа, разделённые пробелом: сначала n (1 ≤ n ≤ 1015), а потом m ().

Выходные данные

Для каждого тестового примера в отдельной строке выведите искомое максимальное произведение.

Примеры
Входные данные
12345 2
12345 3
Выходные данные
6170
2460

Страница: << 30 31 32 33 34 35 36 >> Отображать по:
Выбрано
:
Отменить
|
Добавить в контест