Задача 1. Разделение прямоугольника

Входной файл:Стандартный вход   Ограничение времени:1 сек
Выходной файл:Стандартный выход   Ограничение памяти:512 Мб
Максимальный балл:100  

Условие

Аня играет в новую настольную игру «Клетчатое королевство».

Рассмотрим прямоугольное клетчатое поле размером a × b.

Необходимо разделить его на m прямоугольников вертикальными или горизонтальными разрезами. Прямоугольники не обязательно должны получиться равными. Необходимо суммарно провести ровно k разрезов.

Каждый разрез представляет собой прямую линию от одного края поля до другого края поля. Разрезы разрешено делать только по границам клеток — линиям сетки.

Выведите, сколько провести горизонтальных (0 ≤ h < a) и сколько вертикальных (0 ≤ v < b) разрезов. Если поле можно разрезать несколькими способами, выведите тот, в котором горизонтальных разрезов меньше. Если поле нельзя разрезать требуемым образом, выведите  − 1.

Формат входных данных

В первой строке дано ровно одно целое число t — количество тестов.

В следующих t строках находится описание тестов: в i-й строке через пробел даны четыре целых числа: a, b, k, m — высота и ширина поля, количество разрезов и количество прямоугольников соответственно.

Формат выходных данных

Для каждого теста выведите через пробел ровно два целых числа h и v — количество горизонтальных и количество вертикальных разрезов, если прямоугольное клетчатое поле можно разрезать требуемым образом, в противном случае выведите число  − 1.

Ограничения

1 ≤ t ≤ 100

1 ≤ a, b ≤ 109, 0 ≤ k ≤ 2 ⋅ 109, 1 ≤ m ≤ 1018, k < m

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

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

Подзадача Баллы Дополнительные ограничения Необходимые подзадачи Информация о проверке
1 18 a = 1 первая ошибка
2 19 1 ≤ m ≤ 105 первая ошибка
3 20 1 ≤ k ≤ 105 2 первая ошибка
4 21 1 ≤ m ≤ 109 2 первая ошибка
5 22 нет 1 − 4 первая ошибка

Пояснение к примеру

В приведенном примере содержится три теста:

  1. В первом тесте поле можно разрезать, как показано на рисунке:

    Иллюстрация к первому тесту:

    a = 2, b = 2, k = 1, m = 2.

  2. Во втором тесте поле нельзя разрезать требуемым образом.
  3. В третьем тесте поле можно разрезать, как показано на рисунке:

    Иллюстрация к третьему тесту:

    a = 3, b = 5, k = 5, m = 12.

Примеры тестов

Стандартный вход Стандартный выход
1
3
2 2 1 2
1 2 2 3
3 5 5 12
0 1
-1
2 3

Задача 2. Произведение Фибоначчи

Входной файл:Стандартный вход   Ограничение времени:1 сек
Выходной файл:Стандартный выход   Ограничение памяти:512 Мб
Максимальный балл:100  

Условие

Напомним, что последовательность чисел Фибоначчи определяется следующим образом: F0 = 1, F1 = 1, Fn = Fn − 2 + Fn − 1. Последовательность чисел Фибоначчи начинается так: 1, 1, 2, 3, 5, 8, 13, 21, 34, ….

Дано натуральное число n. Требуется посчитать количество способов представить его как произведение чисел Фибоначчи, каждое из которых больше 1.

Формат входных данных

Первая строка ввода содержит целое число t — количество тестов.

Следующие t строк содержат тесты, каждая строка содержит одно целое число n.

Формат выходных данных

Для каждого теста вывести одно число — искомое количество способов.

Ограничения

1 ≤ t ≤ 50

2 ≤ n ≤ 1018

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

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

Подзадача Баллы Дополнительные ограничения Необходимые подзадачи Информация о проверке
1 15 2 ≤ n ≤ 100 первая ошибка
2 17 2 ≤ n ≤ 105 1 первая ошибка
3 9 n = 2k для некоторого k первая ошибка
4 38 2 ≤ n ≤ 109 1, 2 первая ошибка
5 21 2 ≤ n ≤ 1018 1 − 4 первая ошибка

Пояснение к примеру

В примере:

Примеры тестов

Стандартный вход Стандартный выход
1
5
2
7
8
40
64
1
0
2
2
3

Задача 3. Робот-пылесос

Входной файл:Стандартный вход   Ограничение времени:1 сек
Выходной файл:Стандартный выход   Ограничение памяти:512 Мб
Максимальный балл:100  

Условие

Рассмотрим координатную плоскость, которую планируется очищать с использованием робота пылесоса. Робот-пылесос представляет собой квадрат размером k × k со сторонами, параллельными осям координат. Изначально левый нижний угол робота находится в точке (0, 0), а правый верхний, соответственно — в точке (k, k).

Вам дана последовательность из n перемещений робота по плоскости, i-е перемещение характеризуется направлением di, принимающим значения N (вверх, увеличение координаты Y), S (вниз, уменьшение координаты Y), W (влево, уменьшение координаты X) или E (вправо, увеличение координаты X), и целым числом ai — расстоянием, на которое робот перемещается.

На рисунке приведены примеры возможных перемещений робота в каждом направлении.

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

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

Формат входных данных

В первой строке ввода через пробел даны два целых числа: размер робота k и количество команд n.

В i-й из следующих n строк через пробел даны направление i-го перемещения di и его расстояние ai (di — буква N, S, W или E).

Формат выходных данных

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

Ограничения

1 ≤ k ≤ 104; 1 ≤ n ≤ 105

1 ≤ ai ≤ 109

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

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

Подзадача Баллы Дополнительные ограничения Необходимые подзадачи Информация о проверке
1 9 k = 1, n ≤ 10, ai ≤ 10 первая ошибка
2 10 k ≤ 10, n ≤ 10, ai ≤ 100 1 первая ошибка
3 11 k ≤ 1000, n ≤ 1000, ai = 1 первая ошибка
4 8 k ≤ 104, n ≤ 105, ai = k первая ошибка
5 14 k = 1, n ≤ 1000, ai ≤ 109 1 первая ошибка
6 15 k ≤ 104, n ≤ 1000, ai ≤ 109 1 − 3, 5 первая ошибка
7 16 k = 1, n ≤ 105, ai ≤ 109 1, 5 первая ошибка
8 17 k ≤ 104, n ≤ 105, ai ≤ 109 1 − 7 первая ошибка

Пояснение к примеру

Ниже приведены иллюстрации к перемещениям робота согласно примерам из условия. Клетки, которые робот посетил за время своих перемещений, затемнены.

Примеры тестов

Стандартный вход Стандартный выход
1
1 5
E 2
N 2
W 4
S 4
E 4
17
2
3 4
W 2
N 1
W 1
N 2
27

Задача 4. Разноцветные точки

Входной файл:Стандартный вход   Ограничение времени:1 сек
Выходной файл:Стандартный выход   Ограничение памяти:512 Мб
Максимальный балл:100  

Условие

Рассмотрим n точек на плоскости, пронумерованных от 1 до n, обозначим их как P1, P2, …, Pn, координаты i-й точки (xi, yi).

Рассмотрим следующий процесс. Выберем номер начальной точки i и номер следующей за ней точки j (i ≠ j), а также целое число t. После этого номер прицельной точки k вычисляется по следующему алгоритму. Рассмотрим вектор overrightarrowPi Pj, направленный из точки Pi в точку Pj. Упорядочим все точки, кроме j-й, по углу, отсчитывая против часовой стрелки от направления вектора, равного overrightarrowPi Pj, отложенного из точки j. При равенстве угла будем упорядочивать точки по возрастанию расстояния до точки j. В качестве точки k выбирается точка, являющаяся t-й в данном порядке при нумерации с единицы. Далее точка j становится начальной, а точка k — следующей за ней, после чего, пользуясь тем же алгоритмом, вычисляется номер прицельной точки. Этот процесс повторяется до бесконечности.

Для лучшего понимания процесса рассмотрим следующий пример. Пусть имеются 6 точек, изображенных на рисунке 1, а t = 4. Пусть номер начальной точки равен 1, а номер следующей за ней точки равен 2. Отложим вектор overrightarrowP1 P2 от точки P2 и отсортируем все точки, кроме точки P2, по углу, отсчитывая против часовой стрелки от направления данного вектора. На рисунке 2 отложенный вектор обозначен пунктирной линией, а также для удобства проведены векторы из точки P2 во все остальные точки.

Рисунок 1: Пример множества из 6 точек
Рисунок 2: Вектор overrightarrowP1 P2, а также векторы из точки P2 во все остальные точки

Точки будут упорядочены следующим образом: P3, P5, P1, P6, P4. Таким образом, номер прицельной точки равен 6. Далее точка 2 становится начальной, а точка 6 — следующей.

На рисунке 3 изображен процесс для начальной точки 2 и следующей точки 6. Точки будут упорядочены следующим образом: P4, P3, P2, P1, P5. Обратите внимание, что точка P1 в этом списке находится раньше, чем точка P5, так как расстояние от точки P1 до точки P6 меньше, чем расстояние от точки P5 до точки P6. Прицельная точка будет иметь номер 1.

На рисунке 4 изображен процесс для начальной точки 6 и следующей точки 1. Обратите внимание, что в данном случае вектор overrightarrowP6 P1, отложенный из точки P1 совпадает с вектором overrightarrowP1 P5, отложенным из точки P1. Эти векторы изображены сплошной линией. Точки будут упорядочены следующим образом: P5, P6, P4, P2, P3. Прицельная точка будет иметь номер 2. Таким образом, далее процесс начнется для начальной точки 1 и следующей точки 2 и зациклится.

Рисунок 3: Процесс для начальной точки 2 и следующей точки 6
Рисунок 4: Процесс для начальной точки 6 и следующей точки 1

Покрасим каждую из n точек в один из трех цветов. Цвет i-й точки определяется следующим образом:

Для каждой точки определите, в какой цвет ее нужно покрасить.

Формат входных данных

Первая строка содержит два целых числа n и t.

Каждая из следующих n строк содержит два целых числа xi и yi. Гарантируется, что никакие две точки не совпадают.

Формат выходных данных

Выведите строку, состоящую из n символов: i-й символ строки должен обозначать цвет i-й точки. Для зеленой точки выведите букву~«G», для синей точки — букву~«B», а для красной точки — букву~«R».

Ограничения

2 ≤ n ≤ 1 000, 1 ≤ t ≤ n − 1

 − 109 ≤ xi, yi ≤ 109

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

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

Подзадача Баллы Дополнительные ограничения Необходимые подзадачи Информация о проверке
1 10 n ≤ 10, все точки расположены на одной прямой первая ошибка
2 15 все точки расположены на одной прямой 1 первая ошибка
3 10 n ≤ 10, гарантируется, что нет синих точек первая ошибка
4 10 n ≤ 10 1, 3 первая ошибка
5 15 n ≤ 100, гарантируется, что нет синих точек 3 первая ошибка
6 15 n ≤ 100 1, 3 − 5 первая ошибка
7 5 n ≥ 3, все точки являются вершинами строго выпуклого многоугольника и даны в порядке обхода против часовой стрелки первая ошибка
8 20 нет 1 − 7 первая ошибка

Пояснение к примеру

Рассмотрим некоторые точки из первого примера.

Точка P1 окрашены в зеленый цвет, потому что можно выбрать точку P2 в качестве следующей, и процесс посетит точку P1 бесконечное количество раз. Данный пример был рассмотрен выше в условии задачи.

Можно показать, что точка P3 не является зеленой, однако она является синей, так как можно выбрать точку 1 в качестве следующей, точка 3 окажется начальной еще хотя бы один раз. Процесс для начальной точки 1 и следующей точки 3 проиллюстрирован на рисунках 5, 6 и 7 ниже.

Для начальной точки 3 и следующей точки 1 точки будут упорядочены следующим образом: P6, P4, P2, P3, P5. Точка с номером 3 становится прицельной. Далее для начальной точки 1 и следующей точки 3 точки будут упорядочены следующим образом: P5, P1, P2, P6, P4. Точка с номером 6 становится прицельной. Наконец, для начальной точки 3 и следующей точки 6 точки будут упорядочены следующим образом: P4, P3, P2, P1, P5. Точка с номером 1 становится прицельной. Далее процесс продолжится с начальной точкой 6 и следующей точкой 1. Из примера, описанного выше в условии задачи, мы знаем, что процесс зациклится, посещая точки с номерами 6, 1 и 2.

Рисунок 5: Процесс для начальной точки 3 и следующей точки 1
Рисунок 6: Процесс для начальной точки 1 и следующей точки 3
Рисунок 7: Процесс для начальной точки 3 и следующей точки 6

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

Примеры тестов

Стандартный вход Стандартный выход
1
6 4
-1 -1
1 -2
4 -2
2 -4
2 3
-4 -5
GGBBRG
2
2 1
1 1
2 2
GG

0.671s 0.009s 41