Информатика

4 314 задачвместе с подтемами
Число у задачи — рейтинг сложности, слово рядом — насколько она трудна по сравнению с другими задачами такого же типа. Шкалы задач с ответом и задач с кодом между собой не сравниваются. Рядом — счётчики попыток: успешные, неуспешные.
03#45190
В файле содержится информация о совокупности N вычислительных процессов, которые могут выполняться параллельно или последовательно. Будем говорить, что процесс B зависит от процесса A, если для выполнения процесса B необходимы результаты выполнения процесса A. В этом случае процессы могут выполняться только последовательно. Информация о процессах представлена в файле в виде таблицы. В первом столбце таблицы указан идентификатор процесса (ID), во втором столбце таблицы – время его выполнения в миллисекундах, в третьем столбце перечислены с разделителем «;» ID процессов, от которых зависит данный процесс. Если процесс является независимым, то в таблице указано значение 0.

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

Типовой пример организации данных в файле:
 
ID 
процесса B
Время выполнения
процесса B (мс)
ID процесса(ов) A
1 4 0
2 3 0
3 1 1; 2
4 7 3

В данном случае независимые процессы 1 и 2 могут выполняться параллельно, при этом процесс 1 завершится через 4 мс, а процесс 2 – через 3 мс с момента старта. Процесс 3 может начаться только после завершения обоих процессов 1 и 2, то есть, через 4 мс после старта. Он длится 1 мс и закончится через 4 + 1 = 5 мс после старта. Выполнение процесса 4 может начаться только после завершения процесса 3, то есть, через 5 мс. Он длится 7 мс, так что минимальное время завершения всех процессов равно 5 + 7 = 12 мс.

Типовой пример имеет иллюстративный характер. Для выполнения задания используйте данные из прилагаемого файла.

Файл к заданию
02#45189
В файле содержится информация о совокупности N вычислительных процессов, которые могут выполняться параллельно или последовательно. Будем говорить, что процесс B зависит от процесса A, если для выполнения процесса B необходимы результаты выполнения процесса A. В этом случае процессы могут выполняться только последовательно. Информация о процессах представлена в файле в виде таблицы. В первом столбце таблицы указан идентификатор процесса (ID), во втором столбце таблицы – время его выполнения в миллисекундах, в третьем столбце перечислены с разделителем «;» ID процессов, от которых зависит данный процесс. Если процесс является независимым, то в таблице указано значение 0.

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

Типовой пример организации данных в файле:
 
ID 
процесса B
Время выполнения
процесса B (мс)
ID процесса(ов) A
1 4 0
2 3 0
3 1 1; 2
4 7 3

В данном случае независимые процессы 1 и 2 могут выполняться параллельно, при этом процесс 1 завершится через 4 мс, а процесс 2 – через 3 мс с момента старта. Процесс 3 может начаться только после завершения обоих процессов 1 и 2, то есть, через 4 мс после старта. Он длится 1 мс и закончится через 4 + 1 = 5 мс после старта. Выполнение процесса 4 может начаться только после завершения процесса 3, то есть, через 5 мс. Он длится 7 мс, так что минимальное время завершения всех процессов равно 5 + 7 = 12 мс.

Типовой пример имеет иллюстративный характер. Для выполнения задания используйте данные из прилагаемого файла.

Файл к заданию
01#45188
В файле содержится информация о совокупности N вычислительных процессов, которые могут выполняться параллельно или последовательно. Будем говорить, что процесс B зависит от процесса A, если для выполнения процесса B необходимы результаты выполнения процесса A. В этом случае процессы могут выполняться только последовательно. Информация о процессах представлена в файле в виде таблицы. В первом столбце таблицы указан идентификатор процесса (ID), во втором столбце таблицы – время его выполнения в миллисекундах, в третьем столбце перечислены с разделителем «;» ID процессов, от которых зависит данный процесс. Если процесс является независимым, то в таблице указано значение 0.

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

Типовой пример организации данных в файле:
 
ID 
процесса B
Время выполнения
процесса B (мс)
ID процесса(ов) A
1 4 0
2 3 0
3 1 1; 2
4 7 3

В данном случае независимые процессы 1 и 2 могут выполняться параллельно, при этом процесс 1 завершится через 4 мс, а процесс 2 – через 3 мс с момента старта. Процесс 3 может начаться только после завершения обоих процессов 1 и 2, то есть, через 4 мс после старта. Он длится 1 мс и закончится через 4 + 1 = 5 мс после старта. Выполнение процесса 4 может начаться только после завершения процесса 3, то есть, через 5 мс. Он длится 7 мс, так что минимальное время завершения всех процессов равно 5 + 7 = 12 мс.

Типовой пример имеет иллюстративный характер. Для выполнения задания используйте данные из прилагаемого файла.

Файл к заданию
Исполнитель Черепаха действует на плоскости с декартовой системой координат. В начальный момент Черепаха находится в начале координат, её голова направлена вдоль положительного направления оси ординат, хвост опущен. При опущенном хвосте Черепаха оставляет на поле след в виде линии. В каждый конкретный момент известно положение исполнителя и направление его движения.
У исполнителя существует команды: Вперёд n и Назад n (где n – целое число), вызывающие передвижение Черепахи на n единиц в соответствующем направлении,  Направо m и Налево m (где m – целое число), вызывающие изменение направления движения на m градусов по часовой  или против часовой стрелки соответственно.

Запись
Повтори k [Команда1 Команда2 … КомандаS]
означает, что последовательность из S команд повторится k раз.

Определите количество отрезков, из которых состоит фигура, заданная cледующим алгоритмом:
Повтори 67 [Вперёд 10 Направо 20]
Члены экипажа космического корабля «Пегас» приземлились на третьей планете Системы Медуза, для изучения зеркальных цветов. Их корабль приземлился в начале узкого поля фермы, на которой выращивают цветы. Зеркальные цветы начинают прорастать после полуночи. Любезные работники фермы предоставили экипажу план прорастания цветов в виде точки и времени прорастания. Экипажу корабля необходимо улетать с планеты в следующую полночь. Исследовательская группа корабля может передвигаться по планете с максимальной скоростью vmax. На исследование одного цветка группе необходимо время d. Исследовать цветок необходимо сразу весь, нельзя будет к нему вернуться позже. Цветы прорастают тем позже, чем дальше они расположены от начала поля. В одной точке прорастает только один цветок, и каждый цветок прорастает в свой момент времени. Нет двух цветков, которые бы проросли одновременно.
Команда экипажа хочет определить момент времени, когда исследовательская группа сможет вернуться на корабль, исследовав все цветы и затратив на исследование как можно меньше времени.

Входные данные
Программа получает на вход несколько строк. Первая строка содержит 2 целых числа через один пробел: vmax (в см/мин) и d (в минутах), 0 < vmax <= 200, 0 <= d <= 500.
Вторая строка содержит одно число N – количество цветов (в штуках). 0 <= N <= 1400 при d = 0, в противном случае 0 <= N <= 200.
Далее идут N строк, в каждой из которых записано по два числа через пробел: целое число xi – расстояние от цветка до начала поля (в сантиметрах), 0 <= xi <= 32767, и число ti – момент прорастания цветка (в формате hh:mm). Пары приведены в порядке возрастания расстояний.

Выходные данные
Выведите момент времени возвращения исследовательской группы на корабль (в формате hh:mm), округленный до целых минут в большую сторону.

Примечания
1. В часе - 60 минут, в сутках - 24 часа.
2. Время в сутках изменяется от 00:00 до 23:59.
3. Можно считать, что исследовательская группа не меняет направления движения до тех пор, пока не дойдет до последнего цветка.

 
Примеры
Входные данные Выходные данные
1
3 1 
1
100 00:01
01:08
 
В некоторой стране каждый год проходит олимпиада по выживанию. В финале участвуют по 4 человека от каждой из n провинций. По результатам соревнования составляется рейтинг, в который входят все 4n участников в порядке убывания баллов, равных баллов у участников не бывает. Дипломами награждаются ровно 50 % лучших участников (то есть если общее число участников было равно m, то награждаются m/2 первых участников из общего рейтинга).
После публикации предварительного рейтинга тренеры команд могут подавать апелляции против каких-то других провинций, обвинив участников из этой провинции в нарушении правил олимпиады. Каждый тренер может не подавать аппеляции или подать апелляцию на одну или несколько команд соперников.
Если жюри удовлетворит апелляцию против команды, то все участники из данной провинции будут дисквалифицированы и удалены из таблицы результатов. При этом общее число количество участников уменьшится на 4, а количество призёров олимпиады уменьшится на 2.
Тренеры команд каждой из провинций хотят улучшить результаты участников из своей провинции (то есть сделать так, чтобы количество участников олимпиады из этой провинции, которые стали призёрами, увеличилось хотя бы на одного). Для этого они планируют подать апелляции против команд других провинцией. Для каждой провинции определите, какое минимальное количество аппеляций должно удовлетворить жюри, чтобы количество участников из этой провинции, награждённых дипломами, увеличилось. Обратите внимание на то, что вы должны дать ответ для каждой провинции независимо, то есть без учёта возможных апелляций, поданных другими командами.

Входные данные
В первой строке входных данных содержится одно целое число n (1 ≤ n ≤ 25000) — количество провинций, участвовавших в олимпиаде. Следующие 4·n строк содержат рейтинг участников олимпиады, в порядке от лучшего участника к худшему. В i-й строке содержится число от 1 до n — номер команды i-го по рейтингу участника олимпиады. Гарантируется, что в списке участников каждое число от 1 до n встречается ровно 4 раза.
Выходные данные
Программа должна вывести n строк. В i-й строке необходимо вывести минимальное число апелляций, которое должно удовлетворить жюри, чтобы количество награждённых дипломами участников из i-й команды увеличилось. Если улучшить результаты i-й команды путём подачи апелляций нельзя, то в i-й строке должно быть записано число −1.
Примеры
Входные данные Выходные данные
1 2
1
1
1
2
2
2
2
1
-1
1
2 2
1
1
2
2
2
2
1
1
 
-1
-1
3 3
3
3
2
2
1
3
3
2
2
1
1
1
2
1
-1


Замечание
В первом примере из условия в олимпиаде участвовали две команды, и рейтинг участников выглядит так: 1, 1, 1, 2, 2, 2, 2, 1. По предварительному рейтингу дипломами награждаются три участника команды 1 и один участник команды 2. Команда 1 не может улучшить свои результаты, так как если команда 2 будет дисквалифицирована, то дипломы будут выданы всего 2 участникам из 4, но первоначально у команды 1 было 3 диплома. А вторая команда может увеличить количество призёров до 2, подав апелляцию против команды 1.
Во втором примере у обеих команд уже есть по 2 диплома, а при удалении одной из команд останется всего 2 призовых места, то есть при подаче апелляции против другой команды у каждой команды количество дипломов не изменится.
В третьем примере участвовали 3 команды и первоначально дипломами награждались участники из команд 3, 3, 2, 2, 1, 3. Команда 1 может улучшить свои результаты, если подаст две апелляции: против команд 2 и 3. Тогда останется только 4 участника (все они из команды 1), из них дипломами будет награждено двое. Команда 2 может улучшить свои результаты, если подаст одну апелляцию против команды 3. Тогда останется 8 участников и дипломами будут награждены 4 из них: 2, 2, 1, 2, — и у команды 2 станет 3 призёра вместо 2. Команда номер 3 не может улучшить свой результат при помощи апелляций.
 
В старом игровом автомате «Морской бой» игрок сбивает торпедами корабли, двигающиеся по игровому полю слева направо или справа налево.
В нашем варианте игры на поле может находиться одновременно несколько кораблей. Все корабли движутся с одинаковыми скоростями налево или направо. За одну секунду каждый корабль передвигается на единицу длины системы координат. Это означает, что через одну секунду после начала игры корабль, который находился в точке 20 и двигался направо, будет находиться в точке 21, а корабль, который находился в точке 30 и двигался налево, окажется в точке 29.
Вы можете выпускать торпеды, которые будут подбивать корабли. Торпеда, выпущенная в точке с какой-то координатой, уничтожает корабль, находящийся в этот момент в этой точке. При этом если в этой точке в этот момент времени окажется несколько кораблей, то торпеда подобьёт все эти корабли. Вы даже можете одновременно выпускать несколько торпед!
Подбейте все корабли, используя минимальное число торпед.

Входные данные
В первой строке содержится целое число N — количество кораблей, движущихся влево (с уменьшением координаты). Во второй строке содержится целое число M — количество кораблей, движущихся вправо (с увеличением координаты). Гарантируется, что 1 ≤ N + M ≤ 105, N > 0 и M > 0.
Следующие N строк содержат по одному целому числу li — начальные координаты кораблей,двигающихся влево. Следующие M строк содержат по одному целому числу ri — начальные координаты кораблей, двигающихся вправо. Координаты li идут в порядке возрастания, координаты ri также заданы в порядке возрастания. Гарантируется, что все начальные координаты li и ri чётные, различные и не превосходят по модулю 109.
Выходные данные
Программа должна вывести столько строк, сколько торпед необходимо для уничтожения всех кораблей, при этом i-я строка должна содержать два целых числа ti — время нанесения удара i-й торпедой и xi — координату удара i-й торпедой. Все ti и xi должны быть целыми, 0 ≤ ti ≤ 1018 , −1018 ≤ xi ≤ 1018. В один момент времени можно выпускать несколько торпед, в одну точку можно выпускать несколько торпед в разные моменты времени.
Примеры
Входные данные Выходные данные
1 2
1
10
30
20
0 10
5 25

Замечание
В примере из условия два корабля движутся влево и один корабль движется вправо. Начальные координаты кораблей, двигающихся влево, равны l1 = 10 и l2 = 30, а начальная координата корабля, двигающегося вправо, равна r1 = 20. В момент времени t1 = 5 в одной точке x1 = 25 окажутся два корабля — двигающийся влево из точки 20 и двигающийся вправо из точки 30. Их можно подбить одной торпедой. Оставшийся корабль, двигающийся влево, можно подбить, например, в момент времени t2 = 2 в точке x2 = 8.
Как известно, осенью и зимой светает поздно и так хочется утром ещё хоть немного поспать, а не идти в школу! Некоторые школьники готовы даже одеваться, не открывая глаз, лишь бы отложить момент пробуждения. Вот и Саша решил, что майку и носки он вполне может вытащить из шкафа на ощупь с закрытыми глазами и только потом включить свет и одеться.
В шкафу у Саши есть два ящика. В одном из них лежит A синих и B красных маек, в другом — C синих и D красных пар носков. Саша хочет, чтобы и майка, и носки были одного цвета. Он вслепую вытаскивает M маек и N пар носков. В первое же утро Саша задумался, какое минимальное суммарное количество предметов одежды (M + N) он должен вытащить, чтобы среди них гарантированно оказались майка и носки одного цвета. Какого именно цвета окажутся предметы одежды, для Саши совершенно неважно.

Входные данные
На вход программе подаются четыре целых неотрицательных числа A, B, C, D, записанных в отдельных строках: A — количество синих маек, B — количество красных маек, C — количество синих носков, D — количество красных носков. Все числа не превосходят 109 . Гарантируется, что в шкафу есть одноцветный комплект из майки и носков.

Выходные данные
Программа должна вывести два числа: количество маек M и количество пар носков N, которые должен взять Саша. Необходимо, чтобы среди M маек и N пар носков обязательно нашлась одноцветная пара, при этом сумма M + N должна быть минимальной.
 
Примеры
Входные данные Выходные данные
1 6
2
7
3
3 4

Замечание
В примере из условия в шкафу лежит A = 6 синих маек и B = 2 красных маек. Если взять 3 майки, то среди них обязательно найдётся синяя. В другом ящике лежит C = 7 пар синих носков и D = 3 пары красных носков. Если взять 4 пары, то среди них обязательно будет пара синих
носков. Поэтому если взять вслепую 3 майки и 4 пары носков, то среди них обязательно найдётся одноцветный (синий) комплект из майки и носков.
В левом верхнем углу прямоугольного поля размера N ×M сидит Черепашка. Она хочет закрасить некоторые клетки по спирали, закручивающейся к центру, как на рисунке:

Определите, сколько клеток ей придётся закрасить.
Входные данные
Первая строка входных данных содержит число N — высоту прямоугольника, вторая строка содержит число M — ширину прямоугольника. Все числа — целые положительные и не превосходят 2 × 109.
Выходные данные
Программа должна вывести одно целое число — количество клеток, закрашенных Черепашкой.
Обратите внимание, что ответ в этой задаче может превышать возможное значение 32-битной целочисленной переменной, поэтому необходимо использовать 64-битные целочисленные типы данных (тип int64 в языке Pascal, тип long long в C++, тип long в Java и C#).
 
Примеры
Входные данные Выходные данные
1 5
6
20
2 1
5
5
Решив запастись ручками на весь новый учебный год, Игорь подсчитал, что ему нужно M ручек.
В его любимом интернет-магазине есть удобная функция — он может сразу добавить в заказ упаковку из любого числа ручек от 1 до N. Правда, оказалось, что нельзя добавить в заказ две упаковки одного размера. Например, если Игорю нужно купить M = 12 ручек, а максимальное число ручек в упаковке N = 10, то Игорь может добавить в заказ упаковку из 7 ручек и упаковку из 5 ручек, но не сможет добавить две упаковки из 6 ручек.
Сформируйте заказ на M ручек, используя минимальное число различных упаковок.

Входные данные
Первая строка входных данных содержит число N — максимальный размер одной упаковки (1 ≤ N ≤ 109 ). Вторая строка входных данных содержит целое число M — необходимое количество ручек в заказе (1 ≤ M ≤ 109 ).

Выходные данные
Программа должна вывести одно или несколько чисел от 1 до N — размеры выбранных упаковок в любом порядке. Есть имеется несколько возможных решений, то выведите любое из них. Если решения не существует, необходимо вывести одно число «0».
Примеры
Входные данные Выходные данные
1 10
12
5
7
2 2
5
0

У Деда Мороза есть N мешков с подарками. Каждый мешок имеет вес a1, a2, ..., aN. Для равномерной нагрузки на сани Деду Морозу необходимо, чтобы вес всех мешков был одинаковым. Чтобы этого добиться, Дед Мороз своим волшебным посохом может выполнить одну из следующих операций любое количество раз, возможно ноль раз.

  • Дед Мороз может выбрать любой мешок и если его вес кратен двум, то уменьшить вес в два раза.
  • Дед Мороз может выбрать любой мешок и если его кратен трем, то уменьшить вес в три раза.

На каждую операцию у Деда Мороза уходит 1 секунда.

Найдите минимальное общее количество секунд, которое необходимо Деду Морозу, для достижения одинакового веса всех мешков с подарками. Если нет способа достичь цели, выведите вместо этого значение -1.



Входные данные
Программа получает на вход в первой строке целое число N (2 <= N <= 1000). Во второй строке записаны N чисел ai - вес i-го мешка с подарками (1 <= ai <= 109).


Выходные данные
Выведите ответ на задачу.
 
 
Примеры
Входные данные Выходные данные
1 3
1 4 3
3
2 3
2 7 6
-1
3 6
1 1 1 1 1 1 
0

Дед Мороз решил проверить фабрику игрушек, все ли подарки для детей готовы. Чтобы дойти до места хранения игрушек, ему необходимо пройти по узкому секретному коридору. В коридоре на каждом метре пути указано число метров от двери. У двери, возле которой стоит Дед Мороз, записано число 0. По коридору можно двигаться как влево, так и вправо. При движении влево числа отрицательные, при движении вправо - положительные.

Так как место засекречено, завод постоянно меняет вход в хранилище игрушек. 

Дед Мороз знает, что вход в фабрику сегодня расположен у двери с числом X. Также известно, что в коридоре, рядом с числом Y находится дверь, перекрывающая проход по коридору. Чтобы ее открыть необходимо взять ключ, который располагается на стене на полке в коридоре рядом с числом Z.

Определите сможет ли Дед Мороз сам добраться до двери к игрушкам. Если сможет, определите минимальное расстояние, которое необходимо будет пройти Деду Морозу. Если не сможет, то выведите -1.



Входные данные
Программа получает на вход строку, содержащую 3 различных ненулевых числа: X, Y, Z (-103 <= X, Y, Z <= 103).

Выходные данные
Выведите минимальное расстояние, которое необходимо пройти Деду Морозу от двери, у которой он стоит, до двери, за которой расположено место хранения игрушек. Если Дед Мороз не сможет добраться до этой двери, выведите -1.
 
 
Примеры
Входные данные Выходные данные
1 10 -10 1 10
2 20 10 -10 40
3 100 1 1000 -1

Петя обладает обширной библиотекой книг. Сейчас он стоит возле полки с приключенческими рассказами. На ней расположены n книг. Все книги на полке у Пети всегда пронумерованы слева направо. Книга с номером i имеет ai страниц. На полке, возле которой сейчас стоит Петя, количество страниц в каждой книге различно.

Особенность полок в библиотеке Пети такова, что он может брать только крайнюю книгу с полки (то есть либо самую левую, либо самую правую).

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

 

Входные данные
В первой строке записано одно целое число n (2 <= n <= 100) - количество книг на полке. Во второй строке находится n целых различных чисел a1, a2, ..., an (1 <= ai <= 106) - количество страниц в книге.

 

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

 
Примеры
Входные данные Выходные данные
1
5
1 5 4 3 2
2
2
8
2 1 3 4 5 6 8 7
4
В один осенний день чебаркульская сборная по американскому футболу возвращалась на поезде домой после дружеского матча с командой Чебоксар. Подъезжая к очередной реке, главные тренеры футболистов — Алексей Юрьевич и Михаил Леонидович — заметили, что мост через реку на их пути не выглядит слишком надёжно, и, если несколько вагонов с суммарной массой больше W тонн будут целиком находиться на нём, переправа обязательно рухнет. Вагоны, которые находятся на мосту не полностью, не учитываются в суммарной массе.
Алексей Юрьевич, как самый ответственный тренер, точно знает, сколько весит каждый из вагонов поезда: i-й вагон от начала состава имеет массу ai тонн. Михаил Леонидович же имеет идеальное зрение, а потому может сказать, что длина моста равняется длине ровно p вагонов.
Крушения допустить никак нельзя, а потому тренеры приняли волевое решение: отцепить минимальное число вагонов (возможно, все) с конца состава, чтобы поезд смог проехать опасное место. Помогите им и скажите, сколько вагонов придётся оставить до переправы.
Входные данные
В первой строке входных данных через пробел записаны три целых числа n,p и W — количество вагонов в поезде, длина моста в вагонах и максимальная нагрузка в тоннах, которую он выдерживает (1 <= n <= 105, 1 <= p <=105, 0 <= W <=1014).
Во второй строке через пробел записаны n целых чисел ai — веса вагонов в порядке их следования от начала состава (1 <= ai <= 109).
Выходные данные
Выведите единственное число — минимальное количество вагонов, которое надо отцепить от хвоста поезда, чтобы тот смог безопасно проехать по мосту.
 
Примеры
Входные данные Выходные данные
1 4 2 10
5 3 4 8
1

Замечание
В данном тесте мост обрушится, только если на него заедут 3 и 4 вагон одновременно, а это значит, что достаточно отцепить лишь последний вагон.
 
Саша Белый и его бригада приехали на переговоры в Сатку. Однако беседа обещает быть жаркой, поэтому Саша хочет спрятать свою братву в засаду. Переговоры будут проходить на квадратном поле размером 2N×2N, и в каждую клетку этого поля Белый может посадить от 0 до 2 братанов. Так как Саша не любит повторяться, то суммарное количество братанов в каждом столбце и в каждой строке квадратного поля должно быть различным.
Как вы знаете, из-за определённых обстоятельств Белый не закончил вуз, поэтому не силён в программировании, и вам нужно срочно помочь ему.
Подскажите Белому, сможет ли он расставить братву с заданным условием, и если сможет, то приведите пример расстановки.
Входные данные
Во входных данных записано единственное целое число N такое, что 2N — длина стороны поля (1 <= N <= 300).
Выходные данные
На первой строке выведите YES, если существует расстановка, что суммарное количество братанов в каждом столбце и в каждой строке квадратного поля различно, и NO в противном случае. Если расстановка существует, то на следующих 2N строках выведите пример. Если существует несколько подходящих расстановок, то можете вывести любую из них.
 
Примеры
Входные данные Выходные данные
1 1 YES
0 0
1 2
2 2 YES
0 1 0 2
2 2 0 2
0 2 1 2
0 2 0 2
В свободное от учебы время Даша очень любит смотреть мультсериалы, снятые по комиксам. Она уже выбрала мультсериал для просмотра, но есть одна проблема. Достаточно часто в экранизациях комиксов серии снимают не последовательно по хронологии событий, а в каком-то странном порядке. 
Чтобы избавить себя от путаницы, Даша решила, что выберет и посмотрит ровно три серии, причем так, чтобы номера этих серий шли в возрастающем порядке и годы, в которые происходят события в сериях, тоже шли в возрастающем порядке. Для каждой серии известно, в каком году происходят события этой серии.
Помогите Даше найти три подходящие серии для просмотра.

Входные данные
В первой строке входных данных записано единственное целое число N — количество серий (3 <= N <= 105 ).
В каждой из следующих N строк записано по одному целому числу — год, в который происходят события очередной серии (каждый год является целым числом от 1 до 109 включительно).

Выходные данные
Программа должна вывести три целых числа i, j, k (1 <= i < j < k <= N) — номера искомых трех серий. Серии нумеруются числами от 1 до N. Если ответов несколько, выведите любой из них. Если ответа не существует, выведите одно число ноль.
Примеры
Входные данные Выходные данные
1 4
1985
2000
1990
2005
1 2 4
2 4
2000
2000
2001
2001
0

Замечание
В первом примере нужно выбрать серии 1, 2, 4, действие которых происходит в 1985, 2000 и 2005 годах соответственно.
Во втором примере выбрать три серии, удовлетворяющие условиям задачи, нельзя.
В новогодний сладкий подарок нужно положить ровно N конфет. На складе хранятся конфеты, собранные по одной штуке и по три штуки в одной упаковке. Всего имеется A упаковок по одной конфете и B упаковок по три конфеты. Определите, какое наибольшее число подарков можно собрать из имеющихся конфет, если упаковки из трёх конфет нельзя вскрывать и разделять на отдельные конфеты.

Входные данные
Первая строка входных данных содержит целое положительное число N — количество конфет в одном подарке. Вторая строка входных данных содержит целое неотрицательное число A — количество упаковок из одной конфеты. Третья строка содержит целое неотрицательное число B — количество упаковок из трёх конфет.
Чиcло N и общее число конфет на складе не превосходят 2 × 109.

Выходные данные
Программа должна вывести единственное целое число — максимальное число подарков, которое можно собрать из имеющихся конфет
Примеры
Входные данные Выходные данные
1 4
8
2
3


Замечание
В примере из условия на складе имеются 8 упаковок из одной конфеты и 2 упаковки из трёх конфет. В один подарок необходимо положить 4 конфеты. Два подарка можно собрать, используя 1 упаковку из одной конфеты и 1 упаковку из трёх конфет. Ещё один подарок можно собрать из 4 упаковок из одной конфеты. Всего было использовано 6 упаковок из одной конфеты и 2 упаковки из трёх конфет, осталось 2 упаковки из одной конфеты, которых не хватит на дополнительный подарок.
23#42934
Исполнитель Черепаха действует на плоскости с декартовой системой координат. В начальный момент Черепаха находится в начале координат, её голова направлена вдоль положительного направления оси ординат, хвост опущен. При опущенном хвосте Черепаха оставляет на поле след в виде линии. В каждый конкретный момент известно положение исполнителя и направление его движения.
У исполнителя существует команды: Вперёд n и Назад n (где n – целое число), вызывающие передвижение Черепахи на n единиц в соответствующем направлении,  Направо m и Налево m (где m – целое число), вызывающие изменение направления движения на m градусов по часовой  или против часовой стрелки соответственно.

Запись
Повтори k [Команда1 Команда2 … КомандаS]
означает, что последовательность из S команд повторится k раз. Черепахе был дан для исполнения следующий алгоритм:

Направо 60 Повтори 33 [Вперед 10 Направо 144] 

Определите сколько раз Черепаха будет переходить из первой четверти в четвертую. Когда Черепаха начинает движение из точки с координатами (0, 0), это не является переходом между четвертями.
22#42933
Исполнитель Черепаха действует на плоскости с декартовой системой координат. В начальный момент Черепаха находится в начале координат, её голова направлена вдоль положительного направления оси ординат, хвост опущен. При опущенном хвосте Черепаха оставляет на поле след в виде линии. В каждый конкретный момент известно положение исполнителя и направление его движения.
У исполнителя существует команды: Вперёд n и Назад n (где n – целое число), вызывающие передвижение Черепахи на n единиц в соответствующем направлении,  Направо m и Налево m (где m – целое число), вызывающие изменение направления движения на m градусов по часовой  или против часовой стрелки соответственно.

Запись
Повтори k [Команда1 Команда2 … КомандаS]
означает, что последовательность из S команд повторится k раз. Черепахе был дан для исполнения следующий алгоритм:
Налево 30 Повтори 25 [Вперед 10 Направо 144] 
Определите сколько раз Черепаха будет переходить из первой четверти во вторую. Когда Черепаха начинает движение из точки с координатами (0, 0), это не является переходом между четвертями.
21#42932
Исполнитель Черепаха действует на плоскости с декартовой системой координат. В начальный момент Черепаха находится в начале координат, её голова направлена вдоль положительного направления оси ординат, хвост опущен. При опущенном хвосте Черепаха оставляет на поле след в виде линии. В каждый конкретный момент известно положение исполнителя и направление его движения.
У исполнителя существует команды: Вперёд n и Назад n (где n – целое число), вызывающие передвижение Черепахи на n единиц в соответствующем направлении,  Направо m и Налево m (где m – целое число), вызывающие изменение направления движения на m градусов по часовой  или против часовой стрелки соответственно.

Запись
Повтори k [Команда1 Команда2 … КомандаS]
означает, что последовательность из S команд повторится k раз. Черепахе был дан для исполнения следующий алгоритм:
Налево 30 Повтори 20 [Вперед 10 Направо 135]
Определите сколько раз Черепаха будет переходить из первой четверти во вторую. Когда Черепаха начинает движение из точки с координатами (0, 0), это не является переходом между четвертями.
Поделиться
Класснуть