Язык программирования

633 задачивместе с подтемами
Число у задачи — рейтинг сложности, слово рядом — насколько она трудна по сравнению с другими задачами такого же типа. Шкалы задач с ответом и задач с кодом между собой не сравниваются. Рядом — счётчики попыток: ✓ успешные, ✗ неуспешные.

На экзамене фиксируется время выполнения каждого задания учеником в часах и минутах. Определите среднее время выполнения задания.

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

В первой строке подаётся количество заданий N. В каждой из следующих N строк — два целых числа: часы и минуты, затраченные на одно задание (0 ≤ часы ≤ 3, 0 ≤ минуты ≤ 59).

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

Два числа через пробел — среднее время в часах и минутах (минуты округлить до целого вниз).

В журнале записано время начала каждого события (часы и минуты). Определите, сколько времени прошло от самого раннего события до самого позднего.

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

В первой строке подаётся количество событий N (N ≥ 2). В каждой из следующих N строк — два целых числа: часы и минуты начала события (0 ≤ часы ≤ 23, 0 ≤ минуты ≤ 59).

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

Два числа через пробел — разница в часах и минутах между самым поздним и самым ранним событием.

Учитель записывает фактическую длительность каждого проведённого урока в часах и минутах. Стандартная длительность урока — 45 минут. Определите, сколько уроков длились дольше стандартного времени.

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

В первой строке подаётся количество уроков N. В каждой из следующих N строк — два целых числа: часы и минуты длительности урока (0 ≤ часы ≤ 2, 0 ≤ минуты ≤ 59).

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

Одно число — количество уроков, длившихся строго дольше 45 минут.

В расписании руководителя записана длительность каждого совещания в часах и минутах. Определите длительность самого длинного совещания.

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

В первой строке подаётся количество совещаний N. В каждой из следующих N строк — два целых числа: часы и минуты длительности одного совещания (0 ≤ часы ≤ 8, 0 ≤ минуты ≤ 59).

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

Два числа через пробел — длительность самого длинного совещания в часах и минутах.

Оператор связи фиксирует длительность каждого телефонного разговора в часах и минутах. Определите суммарную длительность всех разговоров.

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

В первой строке подаётся количество звонков N. В каждой из следующих N строк — два целых числа: часы и минуты длительности одного звонка (0 ≤ часы ≤ 10, 0 ≤ минуты ≤ 59).

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

Два числа через пробел — суммарное время в часах и минутах.

A + B#91346

Так как стандартная операция сложения слишком сложна, чтобы описать её в рамках этой страницы, мы введём свою операцию сложения <<+>>. Результатом сложения чисел \(A\) и \(B\) (обозначим \(A+B\)) назовём число, полученное приписыванием справа к \(A\) числа \(B\). Например \(20 + 25 = 2025\), а \(25 + 20 = 2520\). Как видите, \(A + B\) не всегда равно \(B + A\), так что найдите большее из них.

То есть по заданным \(A\) и \(B\) требуется найти наибольшее из чисел \(A+B\) и \(B+A\).

В единственной строке вводятся два целых числа \(A\) и \(B\) (\(0 < A, B < 1000\)).

Выведите единственное число — наибольшее из чисел \(A+B\) и \(B+A\).

В столице Флатландии открыта линия городской электрички. На линии \(n\) станций, пронумерованных от \(1\) до \(n\). Линия проходит город по диаметру и обоими концами уходит в область. А именно, станции с \(1\)-й по \(a\)-ю находятся в области, затем станции с \((a+1)\)-й по \((b-1)\)-ю находятся в городе, а станции с \(b\)-й по \(n\)-ю находятся в области.

Стоимость билета на электричку зависит от начальной, конечной станции и того, через какие станции проезжает пассажир.

  • Если и начальная, и конечная станция находятся в городе, применяется тариф <<город>>.

  • Если обе станции находятся в области, причём между этими станциями электричка не проезжает через город, то применяется тариф <<область>>.

  • В противном случае применяется тариф <<полный>>.

Напишите программу, которая по начальной станции \(s\) и конечной станции \(t\) определяет, какой тариф необходимо применить.

Формат входных данных
Первая строка содержит три целых числа: \(n\), \(a\) и \(b\) (\(3 \le n \le 10^9\), \(1 \le a\), \(b \le n\), \(b - a > 1\)).

Вторая строка содержит два целых числа: \(s\) и \(t\) (\(1 \le s, t \le n\), \(s \ne t\)).

Формат выходных данных
Если необходимо применить тариф <<город>>, выведите <<City>>.

Если необходимо применить тариф <<область>>, выведите <<Outside>>.

Если необходимо применить тариф <<полный>>, выведите <<Full>>.

Саша пронумеровала клетки шахматной доски, начиная с левого нижнего угла (клетки a1) по горизонталям сверху вниз, внутри горизонтали слева направо. У неё получилась следующая нумерация:

image

По заданному номеру клетки выведите, что это за клетка.

На вход подаётся одно число \(n\) от 1 до 64.

Выведите, какая клетка получила номер \(n\).

В этой задаче 20 тестов, каждый оценивается независимо в 5 баллов.

Как часть исследования вопроса "почему коровы переходят дороги", Фермер Джон получить задание составить документ о том, сколько раз каждая из его коров переходила дорогу. Он тщательно залоггировал данные о местоположении каждой из его коров, и выполнил серию из \(N\) наблюдений в течение дня. Каждое наблюдение содержало ID коровы (целое число в интервале \(1 \ldots 10\), поскольку у ФД было всего 10 коров), а также на какой стороне дороги находится корова.

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

ФОРМАТ ВВОДА (файл crossroad.in):

Первая строка ввода содержит количество наблюдений, \(N\), положительное целое число не более 100. Каждая из последующих \(N\) строк содержит одно наблюдение, которое содержит ID коровы за которым стоит число 0 или 1 (0 на одной стороне дороги, 1 на другой стороне дороги).

ФОРМАТ ВЫВОДА (файл crossroad.out):

Вычислите общее количество подтверждённых пересечений.

У Фермера Джона есть 7 молочных коров: Bessie, Elsie, Daisy, Gertie, Annabelle, Maggie, Henrietta. Он доит их каждый день и хранит детальный протокол количества молока, которая дала каждая корова во время каждой дойки. Не удивительно, что ФД поощряет коров, которые дают больше молока.

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

ФОРМАТ ВВОДА (файл notlast.in):

Ввод начинается со строки, содержащей целое число \(N\) (\(1 \leq N \leq 100\)), определяющее количество записей в протоколе дойки.

Каждая из \(N\) последующих строк содержит имя коровы (одно из 7 указанных выше), за которым следует положиельное число (не более 100), указывающее количество молока, которое произвела корова во время очережной дойки.

Любая корова, которая не появилась протоколе - не произвела молока вообще.

ФОРМАТ ВЫВОДА (файл notlast.out):

В единственной строке вывода выведите имя коровы, которая произвела второе по минимальности количество молока. Более точно, если \(M\) минимальное количество молока из всех произведённых коровами, выведите имя коровы, которая произвела минимальное колчиество млока, большее чем \(M\). Если несколько коров произвели такое количество молока или нет аких коров (т.е. все произвели по \(M\) молока), выведите слово "Tie". Не забудьте добавить символ перевода строки в своему выводу. Заметим, что \(M=0\) если одна из коров полностью отсутствует в протоколе дойки.

Беси помогает Фермеру Джону проводить USACO - он-лайн соревнование, где участники отвечают на трудные вопросы по коровьему бытию.

Недавно ФД ввёл в контест 4 дивизиона сложности: Bronze, Silver, Gold, Platinum. Все новые участники начинают в дивизионе Bronze, как только они показывают на контесте совершенный результат, они переводятся в следующий дивизион. Возможно даже, что участник переводится несколько раз в течение одного контеста. ФД хранит список всех участников и их текущий дивизион. Поэтому каждый начинает со своего дивизиона в любой момент контеста.

Когда ФД публикует результаты последнего контеста, он хочет включить информацию по количествам переведенных из Bronze в Silver, из Silver в Gold, из Gold в Platinum. Однако он затрудняется считать перемещения, если они происходят в течение одного контеста. Беси поняла, что ФД может выводить количество случившихся перемещений непосредственно из количества участников в каждом уровне до и после контеста. Помогите ей выполнить эти вычисления.

ФОРМАТ ВВОДА (файл promote.in):

Ввод состоит из 4 строк, каждая содержит два числа в интервале 0..1,000,000. Первая строка указывает количество участников в дивизионе Bronze до и после контеста. Вторая строка указывает количество участников в дивизионе Silver до и после контеста. Третья строка указывает количество участников в дивизионе Gold до и после контеста. Четвёртая строка указывает количество участников в дивизионе Platinum до и после контеста.

ФОРМАТ ВЫВОДА (файл promote.out):

Пожалуйста, выведите три строки, каждая содержит одно целое число. Первая строка должна содержать количество участников, которые были перемещены из Bronze в Silver. Вторая строк должна содержать количество участников, которые были перемещены из Silver в Gold. Последняя строка должна содержать количество участников, которые были перемещены из Gold в platinum.

Фермер Джон пытается научить своих коров читать, дав им множество из N дощечек, обычно используемых дошкольниками (\(1 \leq N \leq 100\)). Каждая дощечка имеет слово и рисунок на каждой стороне. Например, одна сторона может иметь слово 'cat' и картинку кота на одной стороне и слово 'dog' и картинку собаки на другой стороне.

Когда дощечки лежат на земле, видно \(N\) слов. Переворачивая таблички можно получать различные множества из \(N\) слов. Чтобы помочь коровам запомнить буквы, ФД хочет подготовить некоторое количество деревянных блоков, на каждом из которых выписана одна буква алфавита. Он хочет подготовить достаточное количество блоков с каждой буквой, для того чтобы вне зависимости от того, какое множество из \(N\) слов показывается, коровы могли составить все слова используя эти блоки. Например, если \(N=3\) и на табличках представлены слова 'box', 'cat', 'car', коровам нужно как минимум 1 'b', 1 'o', 1 'x', 2 'c', 2 'a', 1 't', 1 'r'.

Помогите ФД определить минимальное количество блоков для каждой буквы алфавита, которые он должен обеспечить, чтобы вне зависимости от того какой стороной вверх направлены таблички, можно было составить все \(N\) видимых слов.

ФОРМАТ ВВОДА (файл blocks.in):

Строка 1 содержит целое число \(N\).

Каждая из следующих \(N\) строк содержит 2 слова, разделённых одиночным пробелом, задавая два слова на противоположных сторонах дощечки. Каждое слово – строка не более чем из 10 маленьких английских букв.

ФОРМАТ ВЫВОДА (файл blocks.out):

Выведите 26 строк. Первая выходная строка должна содержать требуемое количество букв ‘a’. Следующая строка должна содержать требуемое количество букв ‘b’. И т.д.

Несколько сезонов жарких лет и холодных зим изрядно подпортили изгородь Фермера Джона, и он решил перекрасить её с помощью своей любимой коровы Беси. Беси отлично красит, но к несчастью плохо понимает команды ФД.

Если мы рассмотрим изгородь ФД как одномерную числовую прямую, то ФД закрашивает интервал между \(x=a\) and \(x=b\). Например, если \(a=3\) and \(b=5\), то ФД закрашивает интервал длиной 2. Беси, не понимая команды ФД, закрашивает интервал от \(x=c\) to \(x=d\), который может частично или полностью перекрываться с интервалом ФД. Пожалуйста, определите общую длину изгороди которую покрасят ФД и Беси.

Формат ввода (файл paint.in):

Первая строка ввода содержит целые числа \(a\) и \(b\), разделённые одним пробелом (\(a < b\)).

Вторая строка содержит целые числа \(c\) и \(d\), разделённые одним пробелом (\(c < d\)).

Значения \(a\), \(b\), \(c\), \(d\) все лежат в интервале \(0 \ldots 100\), включительно.

Формат вывода (файл paint.out):

Выведите в одной строке общую длину изгороди, покрытой краской.

Несколько сезонов жарких лет и холодных зим изрядно подпортили изгородь Фермера Джона, и он решил перекрасить её с помощью своей любимой коровы Беси. Беси отлично красит, но к несчастью плохо понимает команды ФД.

Если мы рассмотрим изгородь ФД как одномерную числовую прямую, то ФД закрашивает интервал между \(x=a\) and \(x=b\). Например, если \(a=3\) and \(b=5\), то ФД закрашивает интервал длиной 2. Беси, не понимая команды ФД, закрашивает интервал от \(x=c\) to \(x=d\), который может частично или полностью перекрываться с интервалом ФД. Пожалуйста, определите общую длину изгороди которую покрасят ФД и Беси.

Формат ввода (файл paint.in):

Первая строка ввода содержит целые числа \(a\) и \(b\), разделённые одним пробелом (\(a < b\)).

Вторая строка содержит целые числа \(c\) и \(d\), разделённые одним пробелом (\(c < d\)).

Значения \(a\), \(b\), \(c\), \(d\) все лежат в интервале \(0 \ldots 100\), включительно.

Формат вывода (файл paint.out):

Выведите в одной строке общую длину изгороди, покрытой краской.

Marathon#90333

Беси участвует в марафоне.
Маршрут марафона состоит из N контрольных точек (3 <= N <= 500),
которые надо посетить по порядку, причём контрольная точка 1 -
старт, контрольная точка N - финиш.

Беси решил пропустить до K (K сократить себе маршрут. Она не может пропустить контрольные точки
1 и N.

Определите минимальное расстояние которое пробежит Беси, если она
может пропустить до K контрольных точек.

Поскольку марафон проводится на улицах Манхэттена, то и расстояние
между точками (x1, y1) и (x2, y2) нужно определять манхэттенское:
|x1-x2| + |y1-y2|.

INPUT: (файл marathon.in)

В первой строке задаются N и K.
Каждая из следующих N строк содержит два разделённых пробелом целых
числа x и y, представляющих контрольную точку (-1000 <= x <= 1000,
-1000 <= y <= 1000). Контрольные точки даны в порядке, в котором они
должны посещаться.

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

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

Выведите миниальное расстояние, которое Беси может пробежать,
пропустив до K контрольных точек. В данном примере, пропустив
точки (8,3) и (10,-5) она пробежит минимальное растояние, равное 4.

Marathon#90328

Фермер Джон отправил Беси на марафон.
Дистанция включает N (3 <= N <= 100,000) контрольных пунктов,
которые нужно посетить поочерёдно, от 1 до N.
Ленивая Беси решила пропустить один контрольный пункт
(не 1 и не N разумеется).

Помогите Беси найти минимальное расстояние, которое ей придётся
пробежать, если она пропустит один контрольный пункт.

Замечание: расстояние между двумя точками (x1,y1) и (x2,y2)
надо рассматривать и вычислять как манхэттенское
|x1-x2| + |y1-y2|,
поскольку во время этого марафона двигаться можно только
параллельно осям координат.

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

Первая строка даёт значение N.

Каждая из последующих N строк содержит два разделённых
пробелом целых числа X и Y (-1000 <= x <= 1000, -1000 <= y <= 1000),
представляющих контрольный пункт.

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

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

Когда Беси пропускает контрольную точку, она пропускает её,
а не все контрольные точки, расположенные в этой позиции.

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

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

В приведенном примере, пропустив точку(8,3) получим
минимальное расстояние 14.

Пример вывода

14

Беси любит разгадывать кроссворды.
Однако её сестра Эльза пролила молоко на кроссворд,
и теперь Вам предстоит его восстановление (номеров
загаданных слов).

Вам даётся кроссворд, как решётка N*M (3 <= N <=
50, 3 <= M <= 50). Некоторые из клеток пусты (обычно они
белые), а некоторые заблокированы (обычно они чёрные).

Теперь процесс присвоения номеров загаданным словам -
это простой процесс из двух логических шагов:

Шаг 1: Для каждой ячейки мы определяем, начинает ли она
горизонтальное загаданное слово, или вертикальное
загаданное слово. Чтобы ячейка начинала горизонтальное
загаданное слово, нужно, чтобы её левая соседка была
заблокированной ячейкой или лежала вне кроссворда и две
клетки вправо от неё должны быть пустыми. (То есть
горизонтальное загаданное слово всегда содержит 3 или более
символов). Правила для ячейки, начинающей вертикальное
загаданное слово аналогичны: ячейка сверху должна быть
заблокирована или вне кроссворда и две клетки вниз
должны быть пустыми.

Шаг 2: Мы назначаем номер каждой ячейке, которая начинает
слово, последовательно от 1 в том же порядке, в котором
мы читаем книгу.
В первой строке назначаем числа слева направо, затем во
второй строке назначаем числа слева направо и т.д.
Числа назначаются только ячейкам, начинающим слова.

Например, рассмотрим кроссворд, где пустые ячейки отмечены
символами '.'. а блокированные ячейки отмечены символами '#'.

...
#..
...
..#
.##

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

!!!
#..
!..
..#
.##

Номера должны быть таковы:

123
#..
4..
..#
.##

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

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

Первая строка ввода содержит N и M, разделённые
одиночным пробелом.

Последующие N строк ввода описывают строки
решётки. Каждая состоит из M символов, каждый из которых
либо '.' (пустая ячейка) либо '#' (блокированная ячейка).

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

На первой строке выведите количество загаданных слов.
На каждой из оставшихся строк выведите строку и колонку
дающую позицию одного слова (в порядке, описанном выше).
Верхняя левая ячейка имеет позицию (1,1). Нижняя правая
ячейка имеет позицию (N,M).

**Замечание: Время на тест в этой задаче 4 сек, в 2 раза больше, чем по умолчанию.**

Беси использует свой изящный телескоп чтобы сделать фотографии всех звёзд на ночном небе. Её телескоп может сделать фото \(N \times N\) (\(1 \leq N \leq 1000\)) пикселов, где каждый пиксел это или звезда, или пустое небо. Каждая звезда будет представлена ровно одним пикселом, и никакие две звезды на разделяют один и тот же пиксел.

Ночью происходит что-то странное со звёздами на небе. Каждая звезда или исчезает или перемещается на \(A\) пикселов вправо и на \(B\) пикселов вниз (\(0 \leq A,B \leq N\)). Если звезда исчезает или перемещается за границу фото, она больше не появляется на втором фото.

Беси делает фотографии до и после перемещений, но после экспериментов, она случайно наложила одну фотографию на другую. Теперь она видит белые пикселы, которые были пустыми на обеих фотографиях, серые пикселы, где звезда была ровно на одном фото и чёрные пикселы, где была звезда на обоих фотографиях. Беси также помнит, что на второй фотографии не появились новые звёзды, поэтому первая фотография содержит все звёзды ночного неба. Если не существует исходного положения звёзд, которое может произвести финальное фото, выведите \(-1\).

ФОРМАТ ВВОДА (с клавиатуры / stdin):

Первая строка ввода содержит \(T\), далее следуют \(T\) подтестов.

Первая строка каждого подтеста содержит \(N\) \(A\) \(B\).

Далее следуют \(N\) строк, каждая из которых представляет одну строку наложенных фотографий. \(i\)-ая строка представлена строкой \(c_{i,1}c_{i,2}\dots c_{i,N}\), где каждый \(c_{i,j} \in \{W,G,B\}\), представляющих белый, серый и чёрный цвет соответственно.

Гарантируется, что сумма \(N^2\) для всех подтестов не превысит \(10^7\).

ФОРМАТ ВЫВОДА (на экран / stdout):

Для каждого подтеста выведите минимальное количество звёзд, которые существовали до сдвига или \(-1\) если это невозможно определить.

п»ї

Беси стоит пере двумя стогами сена. Первый содержит \(a\) снопов, второй - \(b\) снопов \(1\le a,b\le 10^{18}\)).

Она должна превратить их в стоги с \(c\) и \(d\) снопами - ни больше, ни меньше.

Беси может выполнять только такие два заклинания:

  • Увеличить размер первого стога РЅР° количество СЃРЅРѕРїРѕРІ РІРѕ втором стоге.
  • Увеличить размер второго стога РЅР° количество СЃРЅРѕРїРѕРІ РІ первом стоге.
Она должна выполнять операции последовательно, но она может выполнять их любое количество раз и в любом порядке. Она должна получить ровно \(c\) снопов в первом стоге и \(d\) во втором (\(1\le c,d\le 10^{18}\)).

Для каждого из \(T\) (\(1\le T\le 10^4\)) независимых подтестов, выведите минимальное количество операций, чтобы добиться нужного результата, или если это невозможно, выведите -1.

ФОРМАТ ВВОДА (с клавиатуры / stdin):

Первая строка содержит \(T\).

Каждая из следующих \(T\) строк содержит четыре целых числа \(a,b,c,d\).

ФОРМАТ ВЫВОДА (на экран / stdout):

Выведите \(T\) строк, ответ на каждый подтест.

ПР�МЕР ВВОДА:

4
5 3 5 2
5 3 8 19
5 3 19 8
5 3 5 3

ПР�МЕР ВЫВОДА:

-1
3
-1
0

В первом подтесте невозможно, посокльку изначально \(b>d\), разрешённые операции могут только увеличивать \(b\).

Во втором подтесте изначально стоги имеют \((5, 3)\) снопов. Беси может увеличить первый стог на количество снопов во втором получит \((8, 3)\). Затем увеличит количество второй стог на новое количество снопов в первом, получит \((8, 11)\) Затем сделает эту операцию ещё раз и получит \((8, 19)\) � это минимальное количество операций, чтобы получить данный результат.

Заметим, что в третьем подтесте ответ не такой как во втором, потому, что \(c\) и \(d\) поменяны местами (порядок куч имеет значение).

В четвертом подтесте не требуется выполнять операции.

ПР�МЕР ВВОДА:

1
1 1 1 1000000000000000000

ПР�МЕР ВЫВОДА:

999999999999999999

ОЦЕН�ВАН�Е:

  • Тесты 3-4: \(\max(c, d) \le 20 \cdot\min(a, b)\)
  • Тесты 5-7: \(T \le 10\) and \(a,b,c,d\le 10^6\)
  • Тесты 8-12: Нет дополнительных ограничений

Автор: Benjamin Qi

Ответьте на \(Q\) (\(1\le Q\le 10^5\)) независимых запроса следующего вида:

Вам даны четыре целых числа \(a,b,c,d\) (\(-10^{18}\le a,b,c,d\le 10^{18}\)). За одну операцию Вы можете сделать либо \(a\mathrel{+}=b\), или \(b\mathrel{+}=a\) Определите минимальное количество операций чтобы трансформировать \((a,b)\) в \((c,d)\), если это невозможно сделать, выведите \(-1\).

ФОРМАТ ВВОДА (с клавиатуры / stdin):

Первая строка содержит \(Q\).

Каждая из следующих \(Q\) строк содержит четыре целых числа \(a,b,c,d\).

ФОРМАТ ВЫВОДА (на экран / stdout):

Ответ для каждого запроса на отдельной строке

Поделиться
Класснуть