A. Часы
Ограничения: время – 1s/2s, память – 64MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод ![Копировать номер copy](/images/simple/b_copy.png)
Послать решение Blockly Посылки Темы Где Обсудить (1)
![](8608.jpg)
Пекарь
Антонио Панеттони считает, что для получения рождественского пирога
идеальной симметричной формы его нужно вынимать из духовки в тот момент, когда часы показывают "палиндромное" время,
которое читается одинаково слева-направо и справа-налево.
Напишите программу, которая определяет по времени установки пирога в духовку время, когда на часах будет подходящее время
для его извлечения.
Первая строка ввода содержит одно целое число `N` (`1\ ≤\ N\ ≤\ 100`) – количество вариантов для времени установки пирога в духовку.
Далее следует `N` строк, содержащих время в формате `"HH"`:`"MM"` (`00\ ≤\ "HH"\ ≤23`, `00\ ≤\ "MM"\ ≤\ 59`).
Для каждого заданного времени вывести ближайшее "палиндромное" время, не совпадающее с заданным, в формате `"HH"`:`"MM"`.
Пример ввода
3
00:00
12:34
23:59
Пример вывода
01:10
13:31
00:00
B. Сортировка
Ограничения: время – 1s/2s, память – 64MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод ![Копировать номер copy](/images/simple/b_copy.png)
Послать решение Blockly Посылки Темы Где Обсудить (0)
![](8611.jpg)
Начинающий программист Дон Тунк хочет определить количество операций обмена и
количество проходов в известном алгоритме при сортировке некоторой последовательности целых чисел.
Для этого он написал следующую программу на языке Паскаль:
program BubbleSort;
var
Arr:Array[1..100000] of Integer;
n, i, Temp, Count, NLoop : Integer;
Flag : Boolean;
begin
read(n);
for i:=1 to n do
read(Arr[i]);
Count := 0;
NLoop := 0;
repeat
Flag := False;
for i := 1 to n - 1 do
if Arr [i] > Arr [i + 1] then
begin
Temp := Arr [i];
Arr [i] := Arr [i + 1];
Arr [i + 1] := Temp;
Flag := True;
inc(Count);
end;
inc(NLoop);
until not Flag;
writeln(Count,' ',NLoop);
end;
Есть перевод этой программы на язык Си:
#include <stdio.h>
int Arr[100000];
int n, i, Temp, Count=0, NLoop=0, Flag;
int main()
{ scanf("%d",&n);
for(i=0; i<n; ++i)
scanf("%d",&Arr[i]);
do
{ Flag=0;
for(i=0; i<n-1; ++i)
if(Arr[i]>Arr[i+1])
{ Temp=Arr[i];
Arr[i]=Arr[i+1];
Arr[i+1]=Temp;
Flag=1;
++Count;
}
++NLoop;
} while(Flag);
printf("%d %dn",Count,NLoop);
return 0;
}
К сожалению, время работы этой программы оказалось очень большим,
поэтому Дон обратился за помощью к вам, чтобы вовремя завершить свое исследование.
Напишите программу, определяющую для заданной последовательности количество обменов и количество проходов,
необходимых для её сортировки вышеуказанным алгоритмом.
Первая строка ввода содержит одно целое число `N` (`2\ ≤\ N\ ≤\ 10^5`) – количество элементов в последовательности.
Вторая строка ввода содержит `N` целых чисел в диапазоне от `1` до `10^5` – сортируемую последовательность.
Вывести два целых числа – количество обменов и количество проходов, выполненных при сортировке
заданной последовательности указанным алгоритмом.
C. Марки
Ограничения: время – 1s/2s, память – 64MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод ![Копировать номер copy](/images/simple/b_copy.png)
Послать решение Blockly Посылки Темы Где Обсудить (0)
![](8614.jpg)
Почтовое ведомство выпустило серию марок различного номинала для оплаты пересылки
корреспонденции. Так как места для наклейки марок на конверте или бандероли немного,
необходимо подготовить рекомендации для сотрудников почты о количестве наклеиваемых марок
в зависимости от стоимости пересылки в форме таблицы:
Стоимость пересылки | Количество марок |
от 1 до `P_1` | не более 1 |
от `P_1+1` до `P_2` | не более 2 |
от `P_2+1` до `P_3` | не более 3 |
… | … |
от `P_9+1` до `P_10` | не более 10 |
Для экономии марок необходимо вычислить максимально возможные значения `P_i` для всех `i` от 1 до 10.
Первая строка ввода содержит одно целое число `N` (`1\ ≤\ N\ ≤\ 100`) – количество различных номиналов.
Вторая строка содержит `N` различных целых чисел в диапазоне от 1 до 1000 – номиналы марок. Первое число из них всегда равно 1.
Вывести в первой строке 10 целых чисел – максимально возможные значения `P_i`.
Пример вывода
2 7 12 17 22 27 32 37 42 47