Андрей99951
05.12.2021 11:19

Социальная дистанция Ограничение времени 1 секунда
Ограничение памяти 64Mb
Ввод стандартный ввод или input.txt
Вывод стандартный вывод или output.txt

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

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

Формат ввода
В первой строке записано целое число – количество отдыхающих n (1 ≤ n ≤ 105). Далее идут n строк. В каждой строке записано целое число di – минимальное требуемое расстояние по окружности до соседей для i-го отдыхающего (1 ≤ di ≤ 109).

Формат вывода
Выведите одно целое число – минимальную длину окружности стола, необходимую для рассадки всех отдыхающих.

Пример
Ввод Вывод
3
4
6
5
17
Примечания
В приведенном выше примере необходимо разместить за столом 3 человека: первый хочет сидеть не ближе 4 от своих соседей, второй не ближе 6, третий не ближе 5. Одно из возможных расположений изображено снизу: между первым и третьим 5, между первым и вторым 6, между вторым и третьим 6. Вся длина окружности при этом равно 17. Можно разместить гостей и другими , но добиться длины окружности меньше 17 не удастся.

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
07Лизочек07
02.12.2020 14:51
1. В приведенном коде ошибка. Не хватает ";" в третьей строке снизу.
2. Немного изменим ваш код и получим искомое значение x
Искомое число х = 16293

var
  x, y, a, b, k: integer;

begin
  k:=10000;
  repeat
    x:=k;
    a := 0; b := 0; y := 1;
    while x > 0 do
    begin
      if (x mod 10) mod 2 = 0
        then
        a := a * 10 + x mod 10
      else begin
        y := y * 10;
        b := b * 10 + x mod 10
      end;
      x := x div 10
    end;
    a := a * y + b;
    k := k + 1;
    until a = 26391;
    writeln(a:8, k-1:8); 
end.

 
0,0(0 оценок)
Ответ:
Zazej
26.10.2020 21:39

55:5=11

365:11≈33(34) берём "34", чтобы перехлестнуть 365.

Так как 11-ый член является замыкающим (перехлёстывающим 365), тогда смотрим по ближайшим:

34*10=340 (340+34=374) - подходит, но это не максимум!

365 mod 10= 36, а это значит, что последующий член будет больше 365, а именно 395.

В задании сказано, что d должно быть максимальным, а "34" - это допустимое, но не максимально число, удовлетворяющее условию, даже минимальное (по результату).

Проверка:

34*11=374, значит, когда на экране выведется s:=340, n:=50, то, зайдя по следующему циклу, получится, что s:= 374, n:=55. На следующий цикл программа не пойдёт.

ответ: d=34. 

0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота