За какое наименьшее время Иван поймет, в какой папке нужный диплом - Pascal ABC

Узнай цену своей работы

Формулировка задачи:

В этом году Иван заканчивает школу и поступает в вуз. За время своей учебы он часто участвовал в олимпиадах по информатике и у него накопилось много дипломов. Иван раскладывал дипломы по папкам совершенно бессистемно, то есть любой диплом мог оказаться в любой из папок. К счастью, Иван помнит, сколько дипломов лежит в каждой из папок. Иван хочет принести в приемную комиссию выбранного вуза папку, в которой находится диплом Московской олимпиады по программированию (такой диплом у Ивана ровно один). Для того чтобы понять, что в данной папке нужного диплома нет, Ивану нужно просмотреть все дипломы из этой папки. Просмотр одного диплома занимает у него ровно одну секунду и он может мгновенно переходить к просмотру следующей папки после окончания просмотра предыдущей. Порядок просмотра папок Иван может выбирать. По заданному количеству дипломов в каждой из папок требуется определить, за какое наименьшее время в худшем случае Иван поймет, в какой папке содержится нужный ему диплом. Входные данные В первой строке входного файла записано целое число N (1N100) - количество папок. Во второй строке записаны N целых чисел a1, a2, ..., aN (1ai100) - количество дипломов в каждой из папок. Выходные данные Выведите одно число - минимальное количество секунд, необходимое Ивану в худшем случае для определения того, в какой папке содержится диплом. Примечание В примере Иван может просмотреть папку 2 за 1 секунду и, не найдя там диплома, понять, что диплом находится в папке 1. Если же он найдет диплом в папке 2, то на поиск уйдет также 1 секунда.

Решение задачи: «За какое наименьшее время Иван поймет, в какой папке нужный диплом»

textual
Листинг программы
var
a:array [1..100] of integer;
i,n,kol,max,sec,sum:integer;
begin
readln(n);
max := 0;
kol := 0;
sum := 0;
for i := 1 to n do
begin
read(a[i]);
if a[i] > max then max := a[i];
sum := sum + a[i];
end;
if n = 0 then sec := 0 else sec := sum - max;
writeln(sec);
end.

Объяснение кода листинга программы

  1. Объявлены переменные:
    • a: массив из 100 целых чисел;
    • i, n, kol, max, sec, sum: целочисленные переменные.
  2. Считывается значение переменной n.
  3. Инициализируются переменные max, kol, sum.
  4. Происходит обход массива a от элемента с индексом 1 до элемента с индексом n.
  5. Если элемент a[i] больше max, то обновляется max.
  6. К переменной sum прибавляется значение элемента a[i].
  7. Если n равно 0, то sec присваивается 0.
  8. Иначе, sec вычисляется как сумма всех элементов массива a, кроме максимального.
  9. Выводится значение переменной sec.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.8 из 5
Похожие ответы