8-й открытый турнир по программированию в Абакане
A. Составление выражения
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

У вас имеется некоторый набор из цифр от 1 до 9. Из них нужно составить арифметическое выражение. Каждую цифру можно использовать не более одного раза, а вот скобки и арифметические операции ( + , - , ×  и  / ) можно использовать в любом количестве. Запрещается склеивать цифры для получения новых чисел. Вычислите максимальное возможное значение выражения, которое можно получить таким образом.

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

В единственной строке ввода содержится строка из цифр от 1 до 9. Все цифры различны. Строка не может быть пустой.

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

Выведите одно число — максимальную величину, которую можно получить, соблюдая условия выше.

Примеры
Входные данные
345
Выходные данные
60
Входные данные
7
Выходные данные
7
Примечание

Из цифр 3, 4 и 5 можно составить выражение 3 × 4 × 5, которое равно 60.

Из цифры 7 можно составить только выражение из неё самой.

B. Шалаш
ограничение по времени на тест
1.5 секунд
ограничение по памяти на тест
256 мегабайт
ввод
stdin
вывод
stdout

Мальчик Петя приехал отдыхать к бабушке в деревню. Недалеко от участка есть лес, в котором растут деревья. Гуляя по лесу и мучаясь от тоски он решил построить себе шалаш на деревьях. К счастью, все деревья оказались одинаковой высоты, поэтому он решил построить дом на самом верху.

В качестве деревьев-кандидатов он решил взять такие четыре дерева, которые образуют прямоугольник. Петя уже составил карту леса, где точками он отметил деревья (толщиной деревьев он принебрёг). Чтобы построить лучший шалаш, он хочет приглядеться ко всем вариантам, но деревьев так много, что он попросил Вас о помощи.

Посчитайте количество четвёрок деревьев, которые подойдут Пете.

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

В первой строке содержится целое число $$$1 \leq N \leq 1\,500$$$ — количество деревьев в лесу.

В следующих $$$N$$$ строках содержатся координаты деревьев — целые числа $$$-10^{9} \leq x_{i}, y_{i} \leq 10^{9}$$$.

Координаты любых двух деревьев различны.

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

Выведите одно число — количество вариантов сделать шалаш.

Примеры
Входные данные
6
0 0
0 1
0 2
1 0
1 1
1 2
Выходные данные
3
Входные данные
5
0 0
-1 0
0 -1
1 0
0 1
Выходные данные
1
C. Кубики
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
stdin
вывод
stdout

У Васи имеется N одинаковых кубиков, из которых он может собирать фигуры. Сколькими способами он может собрать из них прямоугольный параллелепипед, используя все кубики? Если два полученных параллелепипеда можно получить друг из друга поворотами, то эти способы считаются одинаковыми.

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

Натуральное число 1 ≤ N ≤ 1111.

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

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

Примеры
Входные данные
1
Выходные данные
1
Входные данные
10
Выходные данные
2
Входные данные
12
Выходные данные
4
Примечание

При N = 1 можно получить параллелепипед размером 1 × 1 × 1.

При N = 10 можно получить параллелепипеды размерами 1 × 1 × 10 и 1 × 2 × 5.

При N = 12 можно получить параллелепипеды размерами 1 × 1 × 12, 1 × 2 × 6, 1 × 3 × 4 и 2 × 2 × 3.

D. Xor them all!
ограничение по времени на тест
2 секунды
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Вам дана последовательность целых чисел a длины n и несколько запросов двух типов:

1. ! i x (1 ≤ i ≤ n, 0 ≤ x < 230) — заменить ai на число x;

2. ? l r (1 ≤ l ≤ r ≤ n) — посчитать последние девять цифр величины , где  — операция побитового исключающего или, в современных языках программирования обозначается как xor или .

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

Первая строка содержит целое число n — длину последовательности. Вторая строка содержит n целых чисел, разделённых пробелами — элементы последовательности. В третьей строке содержится число m - количество запросов. Следующие m строк содержат запросы в формате, описанном выше. 1 ≤ n, m ≤ 105, 0 ≤ ai < 230.

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

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

Примеры
Входные данные
4
1 2 3 4
8
? 1 3
? 2 4
? 1 4
! 2 0
? 1 3
! 4 1
? 1 4
? 2 3
Выходные данные
0
5
18
2
7
0
E. QuadraPop
ограничение по времени на тест
0.5 секунд
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

QuadraPop — аркадная 2D игра, в которой вам нужно набирать очки, уничтожая клетки на поле. В этой задаче рассматривается более общий вариант игры, поэтому опишем правила подробнее.

У вас имеется поле в H строк и W столбцов. Каждая ячейка поля либо пуста, либо занята клеткой определённого цвета. Всего цветов 26 и они обозначены заглавными латинским буквами. На поле действует гравитация — клетка, под которой нет опоры, падает сверху вниз. Так же в игре есть параметр K — если существует связная область из K или более клеток одного цвета, то они уничтожаются. Связными считаются клетки, которые граничат стороной. После уничтожения области может снова начаться процесс падения клеток, который в конце снова спровоцирует уничтожение новых областей и так далее.

Вам дано поле и фигурка из двух клеток, которую нужно расположить вверху поля в любой клетке. Фигурку можно произвольно повернуть. Посчитайте все возможные различные исходы получения очков, которые можно получить. Очки начисляются следующим образом. Выпишем в хронологическом порядке все размеры уничтоженных за время игры областей, обозначим их sk (1 ≤ k ≤ n). Если две области уничтожились в один и тот же момент, раньше в списке идёт та область, у которой верхняя левая клетка находится выше (если и они на одной высоте, то та, которая из этих двух левее). Итоговый счёт игрока равен . Рассмотрите описание тестового примера для лучшего понимания.

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

В первой строке содержатся числа H, W и K, записанные через пробел (2 ≤ H ≤ 50; 1 ≤ W ≤ 50; 2 ≤ K ≤ 5000). В следующих H строках идёт описание поля. Каждая строка содержит W символов. Пустая ячейка обозначается символом «.», закрашенная — большой латинской буквой. В последней строке содержится падающая фигура (два больших латинских символа). Гарантируется, что две верхние строки поля пусты, что связные фигуры из клеток одного цвета имеют размер меньше K, а так же то, что нет падающих клеток.

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

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

Примеры
Входные данные
4 4 3
....
....
....
A.AA
AA
Выходные данные
3 4 5 
Входные данные
3 4 3
....
....
ABCD
CB
Выходные данные
0 
Входные данные
7 5 4
.....
.....
.....
....X
...XX
...AB
XXXCD
XX
Выходные данные
5 8 12 
Входные данные
7 5 3
.....
.....
..B..
A.B.A
C.C.C
ACBCA
ACBCA
CC
Выходные данные
0 22 23 34 
Примечание

Рассмотрим как получить 34 очка в четвёртом тестовом примере:

Шаг №1Шаг №2Шаг №3Шаг №4Шаг №5Шаг №6Шаг №7Шаг №8
.CC.....................................
.......С....С...........................
..B....B....B....С....С....С............
A.B.AA.B.AA.B.A..B.A....A....A....A....A
C.C.CCCC.C....CA.B.CA...C....C....C....C
ACBCAACBCAA.BCAA.BCAA..CA...CA...CA....A
ACBCAACBCAA.BCAA.BCAA..CA...CA..CCA....A
На 3-ем шаге уничтожилась область из букв «C», мы получаем 5 × 1 = 5 очков. На 5-ом шаге уничтожилась область из букв «B», мы получаем 4 × 2 = 8 очков. На 6-ом шаге уничтожилась область из букв «A», мы получаем 3 × 3 = 9 очков. На 8-ом шаге уничтожилась область из букв «C», мы получаем 3 × 4 = 12 очков. Итого 5 + 8 + 9 + 12 = 34 очка.
F. Корень
ограничение по времени на тест
1 секунда
ограничение по памяти на тест
256 мегабайт
ввод
стандартный ввод
вывод
стандартный вывод

Ваша задача — проверить, является ли заданное целое число (от 0 до 104) квадратом целого числа. Если это так, то необходимо вывести корень из этого числа, иначе вывести « - 1».

Дополнительным условием является то, что решение необходимо написать на придуманном нами языке программирования Lacsap. Программа на этом языке работает с 26-ю целочисленными переменными (знакового 4-байтного типа), которые названы в честь больших латинских букв. В любой момент существует текущая переменная, которая равна одной из описанных выше. В начале работы программы текущей является переменная A. Все переменные в начале равны нулю. Код программы — набор строк. В каждой строке содержится ровно одна команда. Строки в коде нумеруются с нуля. В течение работы программы по строкам перемещается указатель, который в самом начале находится в 0-ой строке. Ход программы разбит на такты. В течение каждого такта выполняется ровно одна команда в строке с указателем, команды в языке Lacsap могут быть следующие:

«A»...«Z» — установить соответствующую переменную текущей;

«inc» — увеличить значение текущей переменной на единицу;

«dec» — уменьшить значение текущей переменной на единицу;

«goto line» — переместить указатель на строку line;

«if line1 line2» — условный оператор, если значение текущей переменной не равно нулю, переход указателя на строку line1 иначе - на line2;

«read» — считать число из входного потока данных в текущую переменную;

«write» — вывести значение текущей переменной в выходной поток данных;

«exit» — немедленно завершить работу программы;

Так же, после завершения всех команд, кроме «exit», «if» и «goto», указатель перемещается на следующую строку. Если в течение работы программа попытается считать из входного потока число, которого нет, она завершится с ошибкой исполнения. То же самое произойдёт при попытке перехода указателя на несуществующую строку.

Примеры программ
Бесконечный циклВывод чисел от N до 1
0goto 00N
1read
2if 3 6
3write
4dec
5goto 2
6exit

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

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

В этой задаче нет входных данных.

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

В первой строке выведите целое число 1 ≤ n ≤ 1000 — количество строк в вашей программе на языке Lacsap. Далее выведите n строк — код программы, в формате, описанном выше.

Примеры
Входные данные
There is no input!
Выходные данные
4
N
read
write
exit
Примечание

Тестовый пример приведён только для демонстрации формата вывода. Приведённая программа не решает поставленную задачу.

Если код программы на языке Lacsap написан некорректно, то вы получите вердикт Presentation Error. Если программа корректно написана, но совершает работу с ошибкой, выводит неверный ответ на одном из тестов или работает дольше 106 тактов, то вы получите вердикт Wrong Answer.