Автор: | Методическая комиссия по информатике | |||
Входной файл: | input.txt | Ограничение времени: | 2 сек | |
Выходной файл: | output.txt | Ограничение памяти: | 64 Мб | |
Максимальный балл: | 100 |
Антон в школе начал изучать математику. Его внимание привлекло новое для него понятие числовой прямой. Антон быстро научился вычислять расстояния между двумя точками на этой прямой, задавать отрезки и интервалы на ней.
Готовясь к контрольной работе, Антон столкнулся со следующей задачей: "На числовой прямой задано n точек. Необходимо найти среди них две ближайшие". Расстояние между двумя точками числовой прямой x и y равно |x − y|.
Требуется написать программу, которая поможет Антону решить поставленную задачу.
Первая строка входного файла содержит количество точек n.
Вторая строка входного файла содержит n чисел xi - координаты заданных точек числовой прямой.
В первой строке выходного файла необходимо вывести минимальное расстояние между двумя точками, заданными во входном файле.
Во второй строке выходного файла необходимо вывести номера точек, которым соответствует найденное расстояние. Точки нумеруются натуральными числами от 1 до n в порядке, в котором они заданы во входной файле.
Если ответов несколько, выведите любой из них.
2 ≤ n ≤ 105
xi - целые числа, не превосходящие 109 по абсолютной величине
№ | Входной файл (input.txt ) |
Выходной файл (output.txt ) |
---|---|---|
1 |
|
|
Автор: | Методическая комиссия по информатике | |||
Входной файл: | input.txt | Ограничение времени: | 2 сек | |
Выходной файл: | output.txt | Ограничение памяти: | 64 Мб | |
Максимальный балл: | 100 |
Очень интересными объектами, которые изучаются в планиметрии, являются вписанные и описанные окружности. Известно, например, что вокруг любого треугольника можно описать окружность и в любой треугольник можно вписать окружность. А что будет, если вместо треугольника задан выпуклый многоугольник?
Требуется написать программу, которая определяет, можно ли в заданный выпуклый многоугольник вписать окружность, и, если это можно сделать, то вычисляет координаты ее центра и радиус.
Первая строка входного файла количество вершин многоугольника n.
Последующие n строк содержат координаты вершин многоугольника в порядке обхода против часовой стрелки, каждая i-ая из них содержит два целых числа: xi и yi.
Если окружность, вписанная в заданный многоугольник, существует, необходимо вывести в первой строке выходного файла слово YES, иначе — слово NO. В случае положительного ответа выведите во второй строке координаты центра окружности и ее радиус с точностью до 10− 6.
3 ≤ n ≤ 8
0 ≤ |xi|, |yi| ≤ 1000
№ | Входной файл (input.txt ) |
Выходной файл (output.txt ) |
---|---|---|
1 |
|
|
2 |
|
|
Автор: | Методическая комиссия по информатике | |||
Входной файл: | input.txt | Ограничение времени: | 2 сек | |
Выходной файл: | output.txt | Ограничение памяти: | 64 Мб | |
Максимальный балл: | 100 |
На координатной плоскости задан прямоугольник, высота которого h, а ширина — w. Внутри прямоугольника задано n отрезков, параллельных осям координат.
Прямоугольник планируется разрезать на несколько частей горизонтальными или вертикальными разрезами. За один шаг разрешается разрезать на две непустые прямоугольные части только один из имеющихся на этом шаге прямоугольников. Размеры получившихся частей должны быть целочисленными. Линия разреза не должна пересекать ни один из заданных отрезков.
Требуется написать программу, позволяющую найти количество способов разрезания исходного прямоугольника на k частей. Способы, отличающиеся порядком проведения разрезов, считаются различными.
1 ≤ h, w ≤ 8
1 ≤ k ≤ h × w
0 ≤ n ≤ 10
0 ≤ X1 ≤ X2 ≤ w, 0 ≤ Y1 ≤ Y2 ≤ h
№ | Входной файл (input.txt ) |
Выходной файл (output.txt ) |
---|---|---|
1 |
|
|
2 |
|
|
3 |
|
|
Автор: | Методическая комиссия по информатике | |||
Входной файл: | input.txt | Ограничение времени: | 2 сек | |
Выходной файл: | output.txt | Ограничение памяти: | 256 Мб | |
Максимальный балл: | 100 |
"Чтобы понять рекурсию, надо понять рекурсию"
Фольклор
Одним из важных понятий, используемых в теории алгоритмов, является рекурсия.
Неформально ее можно определить как использование в описании объекта самого себя. Если речь идет о процедуре, то в процессе исполнении эта процедура напрямую или косвенно (через другие процедуры) вызывает сама себя.
Рекурсия является очень "мощным" методом построения алгоритмов, но таит в себе некоторые опасности. Например, неаккуратно написанная рекурсивная процедура может войти в бесконечную рекурсию, то есть, никогда не закончить свое выполнение (на самом деле, выполнение закончится с переполнением стека).
Поскольку рекурсия может быть косвенной (процедура вызывает сама себя через другие процедуры), то задача определения того факта, является ли данная процедура рекурсивной, достаточно сложна. Попробуем решить более простую задачу.
Рассмотрим программу, состоящую из n процедур P1, P2, ..., Pn. Пусть для каждой процедуры известны процедуры, которые она может вызывать. Процедура P называется потенциально рекурсивной, если существует такая последовательность процедур Q0, Q1, ..., Qk, что Q0 = Qk = P и для i = 1… k−1 процедура Qi−1 может вызвать процедуру Qi. В этом случае задача будет заключаться в определении для каждой из заданных процедур, является ли она потенциально рекурсивной.
Требуется написать программу, которая позволит решить названную задачу.
Первая строка входного файла содержит целое число n - количество процедур в программе.
Далее следуют n блоков, описывающих процедуры. Блоки отделены друг от друга и от первой строки входного файла строками, каждая из которых содержит по 5 символов "*" (ASCII 42).
Описание процедуры начинается со строки, содержащий ее идентификатор. Далее идет строка, содержащая число k - количество процедур, которые могут быть вызваны описываемой процедурой. Последующие k строк содержат идентификаторы этих процедур — по одному идентификатору на строке.
Различные процедуры имеют различные идентификаторы. При этом ни одна процедура не может вызвать процедуру, которая не описана во входном файле.
Для каждой процедуры, присутствующей во входном файле, необходимо вывести слово YES
,
если она является потенциально рекурсивной, и слово NO
— в противном случае.
Следуйте формату вывода, приведенному в примере. Процедуры в выходном файле должны быть выведены в том же порядке, в каком они перечислены во входном файле.
1 ≤ n ≤ 100
Идентификатор процедуры состоит только из маленьких букв латинского алфавита и цифр. Также идентификатор не пуст, и его длина не превосходит 100 символов.
k ≤ n
№ | Входной файл (input.txt ) |
Выходной файл (output.txt ) |
---|---|---|
1 |
|
|
Автор: | Методическая комиссия по информатике | |||
Входной файл: | input.txt | Ограничение времени: | 2 сек | |
Выходной файл: | output.txt | Ограничение памяти: | 64 Мб | |
Максимальный балл: | 100 |
Вы являетесь одним из разработчиков нового архитектурного пакета прикладных программ CadArch. Одной из его функций является проектирование укладки половых плиток. В настоящее время вы занимаетесь программной реализацией модуля, который отвечает за укладку плиток в прямоугольных помещениях.
Для простоты будем считать, что пол помещения представляет собой прямоугольник размером n на m метров, разбитый на m*n квадратиков со стороной по 1 метру. Кроме этого, будем считать, что имеется четыре типа плиток, показанные в таблице. Каждая из плиток представляет собой квадрат размером 2 на 2 метра, из которого вырезан один квадратик размером 1 на 1 метр.
|
|
||||
|
|
Проектируемый модуль должен работать следующим образом. На вход модуля подается набор команд, каждая из которых обозначает, в какое место и какого типа плитку необходимо положить. Команда обрабатывается следующим образом: если ни один из квадратиков, который должна занимать текущая плитка, не занят и плитка полностью помещается внутри прямоугольника, то плитка размещается в указанном месте, в противном случае — нет.
Требуется написать программу, которая определяет, какая площадь в соответствии с заданным набором команд будет покрыта плитками.
Первая строка входного файла содержит два числа m и n - размеры пола помещения.
Вторая строка содержит число k — количество команд, которые необходимо обработать. Каждая из последующих k строк содержит описание одной команды из набора команд. Описание команды состоит из трех чисел. Первое число определяет тип плитки (число от 1 до 4), а два других координаты левого верхнего квадрата размером 2 на 2, в который вписана соответствующая плитка.
В выходной файл необходимо вывести одно число, определяющее площадь, покрытую плитками после выполнения заданной во входном файле последовательности команд.
1 ≤ m, n ≤ 50
0 ≤ k ≤ 1000
№ | Входной файл (input.txt ) |
Выходной файл (output.txt ) |
---|---|---|
1 |
|
|