Задача F. Марфа Геннадьевна и часы - 2

Автор:Г. Гренкин   Ограничение времени:1 сек
Входной файл:input.txt   Ограничение памяти:256 Мб
Выходной файл:output.txt  

Условие

Однажды Марфа Геннадьевна проснулась взволнованной. "Надо не забыть перевести часы на час назад", — подумала она. У Марфы Геннадьевны было двое часов. Одни механические, другие электронные. Электронные часы переводят время на час назад автоматически, механические — нет.

В определённые часы Марфа Геннадьевна смотрела на те и другие часы и записывала, сколько часов они показывали. Теперь Марфа Геннадьевна заинтересовалась, во сколько электронные часы перевели время.

Марфа Геннадьевна обратилась к вам за помощью. Напишите программу, принимающую на вход записи Марфы Геннадьевны и вычисляющую все возможные моменты времени, когда электронные часы могли перевести время на час назад. Известно, что электронные часы перевели время ровно один раз на час назад в 1, 2, ..., 22 или 23 часа.

Формат входного файла

Входной файл содержит целое число N — количество записей Марфы Геннадьевны. Далее следуют N пар чисел ai bi, где ai — количество часов, которое показывают механические часы, bi — количество часов, которое показывают электронные часы.

Формат выходного файла

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

Ограничения

1 ≤ N ≤ 24

0 ≤ ai ≤ 23; 0 ≤ bi ≤ 22

a1 < a2 < … aN; b1 ≤ b2 ≤ … ≤ bN

Примеры тестов

Входной файл (input.txt) Выходной файл (output.txt)
1
3
3 3
6 5
10 9
4 5 6
2
1
21 21
22 23
3
2
3 2
14 13
1 2 3

Разбор

Вначале найдём число k — максимальное i, для которого ai = bi. Тогда ответ — это числа от ak + 1 до ak + 1.

Если k = N, то нужно вывести числа от ak + 1 до 23. Если ai = bi + 1 для всех i, то ответ — это числа от 1 до a1. Эти случаи подходят под общий случай, если положить a0 = 0, aN + 1 = 23 и во втором случае k = 0.

var
  a: array[0..25] of integer;
  b: array[1..24] of integer;
  n, k, i: integer;
begin
  assign(input, 'input.txt');
  reset(input);
  assign(output, 'output.txt');
  rewrite(output);

  read(n);
  for i := 1 to n do
    read(a[i], b[i]);

  k := 0;
  a[0] := 0;
  a[n+1] := 23;
  for i := 1 to n do
  begin
    if (a[i] = b[i]) then
      k := i;
  end;

  for i := a[k] + 1 to a[k+1] do
    write(i, ' ');

  close(input);
  close(output);
end.

0.094s 0.012s 13