Парковка

Имя входного файла:

parking. in

Имя выходного файла:

parking. out

Ограничение по времени:

3 секунды

Ограничение по памяти:

32 мегабайта

Максимальный балл:

100 баллов

Администрация города Немногоярославца в связи с резким увеличением потока туристов решила организовать в центре города автомобильную стоянку. Стоянка имеет вид кольца с N парковочными местами. Парковочные места занумерованы от 1 до N по часовой стрелке. Автомобилист, подъезжая к стоянке, двигается вдоль нее по часовой стрелке, пока не найдет свободное парковочное место. После этого он паркует свой автомобиль на этом месте.

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

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

Первая строка входного файла содержит числа N — количество парковочных мест и M — количество автомобилистов (1 ≤ N ≤ 105, 1 ≤ M ≤ N). Следующие M строк содержат описания автомобилистов в следующем формате: t1 — время подъезда к стоянке, t2 — время, когда он покинул стоянку, и c — номер парковочного места, около которого он подъехал к стоянке (t1, t2 целые, 1 ≤ t1 < t2 ≤ 109; 1 ≤ c ≤ N).

НЕ нашли? Не то? Что вы ищете?

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

Выведите в выходной файл M чисел — для всех автомобилистов в порядке их перечисления во входном файле выведите номер занятого парковочного места.

Примеры

parking. in

parking. out

6 6

1 9 6

2 5 6

3 7 6

4 11 4

6 10 5

8 12 4

6

1

2

4

5

1

Мэры

Имя входного файла:

mayors. in

Имя выходного файла:

mayors. out

Ограничение по времени:

3 секунды

Ограничение по памяти:

32 мегабайта

Максимальный балл:

100 баллов

Во Флатландии имеется N городов, расположенных на плоскости в точках с координатами (xi, yi). Недавно президент Флатландии решил назначить в каждом городе мэра. При этом, чтобы его нельзя было уличить в дискриминации, он решил назначить на эти посты как мужчин, так и женщин. Для каждой горизонтальной и вертикальной прямой назовем несправедливостью модуль разности между количеством городов на этой прямой, в которых на пост мэра назначены мужчины и количеством городов на этой прямой, в которых на этот пост назначены женщины.

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

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

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

Первая строка входного файла содержит число N — количество городов (1 ≤ N ≤ 20000). Следующие N строк содержат по два целых числа — координаты городов. Все координаты не превышают 109 по абсолютной величине.

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

Выведите в выходной файл M чисел — для каждого города выведите 0, если в нем следует назначить на пост мэра мужчину, и 1, если женщину.

Примеры

mayors. in

mayors. out

5

0 0

0 1

1 0

1 1

1 2

0

1

1

0

0


Ломаная

Имя входного файла:

poly. in

Имя выходного файла:

poly. out

Ограничение по времени:

3 секунды

Ограничение по памяти:

32 мегабайта

Максимальный балл:

100 баллов

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

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

В первой строке входного файла записано N — количество вершин ломаной (2≤N≤100000). В последующих N строках записаны координаты вершин — целые числа, по модулю не превосходящие 106. Вершины перечислены в порядке прохода по ломаной.

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

В первой строке выходного файла выведите число точек самопересечения ломаной.

Примеры

poly. in

poly. out

8

1 0

3 2

5 0

4 -1

1 2

3 4

5 2

2 –1

3


1 Кроме, возможно, того звена, концом которого она является ☺