Задача A. Черно-белая графика

Автор:Рекомендации   Ограничение времени:2 сек
Входной файл:input.txt   Ограничение памяти:64 Мб
Выходной файл:output.txt  
Максимальный балл:100  

Условие

Одна из базовых задач компьютерной графики — обработка черно-белых изображений. Изображения можно представить в виде прямоугольников шириной w и высотой h, разбитых на w × h единичных квадратов, каждый из которых имеет либо белый, либо черный цвет. Такие единичные квадраты называются пикселами. В памяти компьютера сами изображения хранятся в виде прямоугольных таблиц, содержащих нули и единицы.

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

Первый аргументВторой аргументРезультат
000
011
101
110

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

Формат входного файла

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

Формат выходного файла

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

Ограничения

1 ≤ w, h ≤ 100

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

Входной файл (input.txt) Выходной файл (output.txt)
1
5 3
01000
11110
01000
10110
00010
10110
0110
11110
11100
11110

Задача B. Газон Ивана

Автор:Рекомендации   Ограничение времени:2 сек
Входной файл:input.txt   Ограничение памяти:64 Мб
Выходной файл:output.txt  
Максимальный балл:100  

Условие

Фермер Иван с юности следит за своим газоном. Газон можно считать плоскостью, на которой в каждой точке с целыми координатами растет один пучок травы.

В одно из воскресений Иван воспользовался газонокосилкой и постриг некоторый прямоугольный участок газона. Стороны этого участка параллельны осям координат, а две противоположные вершины расположены в точках (x1, y1) и (x2, y2). Следует отметить, что пучки травы, находящиеся на границе этого прямоугольника, также были пострижены.

Довольный результатом Иван купил и установил на газоне дождевальную установку. Она была размещена в точке с координатами (x3, y3) и имела радиус действия струи r. Таким образом, установка начала поливать все пучки, расстояние от которых до точки (x3, y3) не превышало r.

Все было хорошо, но Ивана заинтересовал следующий вопрос: сколько пучков травы оказалось и пострижено, и полито в это воскресенье?

Требуется написать программу, которая позволит дать ответ на вопрос Ивана.

Формат входного файла

В первой строке входного файла содержатся четыре целых числа x1 y1 x2 y2. Во второй строке входного файла содержатся три целых числа x3 y3 r.

Формат выходного файла

Выходной файл должен содержать одно целое число — число пучков травы, которые были и пострижены, и политы.

Ограничения

 − 105 ≤ x1, y1, x2, y2, x3, y3 ≤ 105

1 ≤ r ≤ 105

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

Входной файл (input.txt) Выходной файл (output.txt)
1
0 0 5 4
4 0 3
14

Задача C. Пассажиры трамвая

Автор:Рекомендации   Ограничение времени:5 сек
Входной файл:input.txt   Ограничение памяти:256 Мб
Выходной файл:output.txt  
Максимальный балл:100  

Условие

С окраины в центр города каждое утро по одному маршруту едут в трамвае N человек. За долгое время поездок они достаточно хорошо узнали друг друга. Чтобы никому не было обидно, они захотели решить, кто из них и между какими остановками маршрута должен сидеть, а кто должен стоять. Все остановки пронумерованы от 1 до P.

Один из пассажиров оказался знатоком теории математического моделирования. Он предложил рассмотреть значение суммарного удовлетворения пассажиров. Для каждого i-го пассажира он оценил две величины — ai и bi. Если в течение одного переезда между остановками пассажир сидит, то к суммарному удовлетворению прибавляется ai, если же он стоит, то прибавляется bi.

Всего в трамвае M сидячих мест. Вставать и садиться пассажиры могут мгновенно на любой остановке. Кроме того, некоторые пассажиры предпочитают ехать стоя, даже если в трамвае есть свободные места (для них ai < bi).

Требуется написать программу, которая вычисляет значение максимально достижимого суммарного удовлетворения, если для каждого i-го пассажира известны величины ai и bi, а также номера остановок, на которых он садится и выходит из трамвая.

В примере максимум достигается следующим образом: на 1-й остановке входят и садятся второй и третий пассажиры; на 2-й остановке входят первый и четвертый пассажиры, второй уступает место первому; на 3-й остановке встают и выходят первый и третий пассажиры, второй и четвертый садятся на их места; на 4-й остановке выходят второй и четвертый пассажиры.

За прохождение всех тестов с P ≤ 100 решение получит 80 баллов, за прохождение всех тестов с N, M, P ≤ 100 — 60 баллов.

Формат входного файла

Первая строка входного файла содержит три целых числа N M P — число пассажиров, число сидячих мест и число остановок на маршруте соответственно.

Каждая из следующих N строк содержит информацию об очередном пассажире в виде четырех целых чисел ai bi ci di, где первые два числа определяют вклад в суммарное удовлетворение, третье — номер остановки, на которой пассажир садится в трамвай, и последнее — номер остановки, на которой он выходит из трамвая (1 ≤ ci < di ≤ P).

Формат выходного файла

Выходной файл должен содержать одно целое число — максимальное суммарное удовлетворение.

Ограничения

1 ≤ N, M ≤ 105; 2 ≤ P ≤ 105;  − 106 ≤ ai, bi ≤ 106

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

Входной файл (input.txt) Выходной файл (output.txt)
1
4 2 4
10 -10 2 3
-1 -3 1 4
6 -6 1 3
7 4 2 4
28

Задача D. Равнобедренные треугольники

Автор:Рекомендации   Ограничение времени:3 сек
Входной файл:input.txt   Ограничение памяти:256 Мб
Выходной файл:output.txt  
Максимальный балл:100  

Условие

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

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

Требуется написать программу, решающую указанную задачу.

Формат входного файла

Входной файл содержит в первой строке целое число n. Каждая из последующих строк содержит по два целых числа — xi и yi, определяющих координаты i-ой точки. Среди заданных точек нет совпадающих.

Формат выходного файла

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

Ограничения

 − 109 ≤ xi, yi ≤ 109

3 ≤ n ≤ 1500

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

Входной файл (input.txt) Выходной файл (output.txt)
1
3
0 0
2 2
-2 2
1
2
4
0 0
1 1
1 0
0 1
4

0.305s 0.013s 21