---> 14 задач <---
Источники
    Личные олимпиады(938 задач)
    Командные олимпиады(684 задач)
Страница: 1 2 3 >> Отображать по:
ограничение по времени на тест
3.0 second;
ограничение по памяти на тест
64 megabytes

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

Все сотрудники компании носят исключительно электронные часы одного образца. Время на них отображается в формате HH:MM:SS (где HH — часы, MM — минуты, SS — секунды, всегда отображаются в виде двух цифр, 00HH23, 00MM59, 00SS59). Перевод часов осуществляется с помощью двух кнопок. Первая кнопка меняет поле редактирования следующим образом: после первого нажатия часы переходят из режима отображения времени в режим редактирования поля HH, после второго — в режим редактирования поля MM, после третьего — в режим редактирования поля SS, а после четвертого возвращаются в режим отображения времени и т.д. по циклу. Каждое нажатие второй кнопки приводит к увеличению редактируемого поля на единицу (в режиме отображения времени ничего не происходит). При переполнении секунд поле SS обнуляется, а MM увеличивается на единицу, при переполнении минут поле MM обнуляется, а HH увеличивается на единицу, а при переполнении часов просто обнуляется поле HH.

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

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

Входные данные

Первая строка входных данных содержит натуральное число N (1N200) — количество сотрудников компании. Последующие N строк содержат показания часов каждого из сотрудников в формате "HH:MM:SS".

Выходные данные

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

Система оценки

1 балл получат программы, правильно решающие задачу при ограничении 1N2.

Примеры
Входные данные
2
08:01:01
07:59:00
Выходные данные
7
ограничение по времени на тест
1.0 second;
ограничение по памяти на тест
64 megabytes

По заданному числу n от 1 до 365 определите, на какое число какого месяца приходится день невисокосного года с номером n.

Входные данные

Дано одно целое число n.

Выходные данные

Программа должна вывести два числа: число месяца (от 1 до 31) и номер месяца (от 1 до 12), соответствующие  дню  с номером n.

Примеры
Входные данные
1
Выходные данные
1 1
Входные данные
90
Выходные данные
31 3
#424
  
Источники: [ Командные олимпиады, ВКОШП, 2004, Задача B ]
ограничение по времени на тест
2.0 second;
ограничение по памяти на тест
64 megabytes
По известному первому дню года, високосности года, количеству столбцов в календаре необходимо напечатать календарь.

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

Календарь состоит из блоков, каждый из которых соответствует одному месяцу. Блоки расположены в виде таблицы из k столбцов и 12/k строк (k выбирается делителем числа 12). Месяцы выводятся в следующем порядке: первая строка содержит блоки, соответствующие месяцам с первого по k-ый, следующая – с (k + 1)-го по 2k-ый, и т. д.

Ширина всех блоков в столбце должна быть одинакова, высота всех блоков равна семи (числу дней в неделе). Между блоками различных строк таблицы выводится пустая строка, в каждой строке между соседними блоками из разных столбцов выводится три пробела.

Блок, соответствующий месяцу, устроен следующим образом. Каждой (в том числе неполной) неделе данного месяца в блоке соответствует столбец, имеющий ширину, равную двум. Между двумя соседними столбцами в каждой строке выводится один пробел. Если несколько блоков располагаются в одном столбце календаря, то для выравнивания ширины в те блоки, которые содержат меньше недель, в конец добавляется необходимое число пустых столбцов-недель. При этом разные столбцы календаря могут иметь разную ширину.

Все числа месяца заносятся в блок, соответствующий этому месяцу. Число заносится  строку блока, соответствующую дню недели, на который приходится число в этом месяце. Число заносится в столбец блока, соответствующий неделе, к которой относится данное число. Однозначные числа дополняются слева одним пробелом. Таким образом, числа в столбце оказываются выравнены по правому краю.

 

includegraphics{pics/calendar.1}   includegraphics{pics/calendar.2}
     
Общая схема календаря       Схема блока месяца

Входные данные

На вход прораммы поступает описание года, календарь для которого следует вывести. Оно содержит три числа: d – день недели, на который приходится первое января ( 1\( le\)d\( le\)7), l – является ли год високосным (l = 1 означает, что год является високосными, l = 0 – что не является) и k – количество столбцов в календаре (k – одно из чисел 1, 2, 3, 4, 6, 12).

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

Выходные данные

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

Примеры
Входные данные
4 1 4
Выходные данные
    5 12 19 26          2  9 16 23    1  8 15 22 29       5 12 19 26   
    6 13 20 27          3 10 17 24    2  9 16 23 30       6 13 20 27   
    7 14 21 28          4 11 18 25    3 10 17 24 31       7 14 21 28   
 1  8 15 22 29          5 12 19 26    4 11 18 25       1  8 15 22 29   
 2  9 16 23 30          6 13 20 27    5 12 19 26       2  9 16 23 30   
 3 10 17 24 31          7 14 21 28    6 13 20 27       3 10 17 24      
 4 11 18 25          1  8 15 22 29    7 14 21 28       4 11 18 25      
                                                                       
    3 10 17 24 31       7 14 21 28       5 12 19 26       2  9 16 23 30
    4 11 18 25       1  8 15 22 29       6 13 20 27       3 10 17 24 31
    5 12 19 26       2  9 16 23 30       7 14 21 28       4 11 18 25   
    6 13 20 27       3 10 17 24       1  8 15 22 29       5 12 19 26   
    7 14 21 28       4 11 18 25       2  9 16 23 30       6 13 20 27   
 1  8 15 22 29       5 12 19 26       3 10 17 24 31       7 14 21 28   
 2  9 16 23 30       6 13 20 27       4 11 18 25       1  8 15 22 29   
                                                                       
    6 13 20 27          4 11 18 25    1  8 15 22 29       6 13 20 27   
    7 14 21 28          5 12 19 26    2  9 16 23 30       7 14 21 28   
 1  8 15 22 29          6 13 20 27    3 10 17 24       1  8 15 22 29   
 2  9 16 23 30          7 14 21 28    4 11 18 25       2  9 16 23 30   
 3 10 17 24          1  8 15 22 29    5 12 19 26       3 10 17 24 31   
 4 11 18 25          2  9 16 23 30    6 13 20 27       4 11 18 25      
 5 12 19 26          3 10 17 24 31    7 14 21 28       5 12 19 26      
ограничение по времени на тест
1.0 second;
ограничение по памяти на тест
64 megabytes

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

Входные данные

Сначала вводится одно целое число \(N\) (0 < \(N\) ≤ 1000).

В каждой из следующих \(N\) строк через пробел расположены 4 целых числа, первые два из которых обозначают время открытия кассы в часах и минутах (часы — целое число от 0 до 23, минуты — целое число от 0 до 59), оставшиеся два — время закрытия в том же формате. Числа разделены пробелами.

Время открытия означает, что в соответствующую ему минуту касса уже работает, а время закрытия — что в соответствующую минуту касса уже не работает. Например, касса, открытая с 10 ч. 30 мин. до 18 ч. 30 мин., ежесуточно работает 480 минут.

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

Выходные данные

Требуется вывести одно число — суммарное время за сутки (в минутах), на протяжении которого работают все N касс.

Пояснения к примерам

1) Первая касса работает с часу до 23 часов, вторая – круглосуточно, третья – с 22 часов до 2 часов ночи следующего дня. Таким образом, все три кассы одновременно работают с 22 до 23 часов и с часу до двух часов, то есть 120 минут.

2) Первая касса работает до 14 часов, а вторая начинает работать в 14 часов 15 минут, то есть одновременно кассы не работают.

3) Вместе кассы работают лишь одну минуту – с 14:00 до 14:01 (в 14:01 вторая касса уже не работает).

Примеры
Входные данные
3
1 0 23 0
12 0 12 0
22 0 2 0
Выходные данные
120
Входные данные
2
9 30 14 0
14 15 21 0
Выходные данные
0
Входные данные
2
14 00 18 00
10 00 14 01
Выходные данные
1
ограничение по времени на тест
1.0 second;
ограничение по памяти на тест
64 megabytes

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

По информации о будильниках и текущему времени и дню недели определите, когда прозвонит очередной будильник.

Входные данные

В первой строке вводятся три числа, задающие текущее время: день недели (от 1 до 7), часы и минуты.

Во второй строке вводится одно натуральное число N, не превосходящее 100 – количество будильников.

В следующих N строках вводятся описания N будильников. Описание каждого будильника состоит из трех чисел: дня недели (число от 1 до 7 для понедельника,  …, воскресенья, соответственно, 0 – если будильник должен звонить каждый день), часов (от 0 до 23), минут (от 0 до 59).

Выходные данные

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

Комментарий. Во втором примере третий будильник будет звенеть в начальный момент времени.
Примеры
Входные данные
2 10 20
2
1 23 15
0 10 10
Выходные данные
3 10 10
Входные данные
7 1 1
3
7 0 59
7 23 59
7 1 1
Выходные данные
7 1 1

Страница: 1 2 3 >> Отображать по:
Выбрано
:
Отменить
|
Добавить в контест