Форум » Массивы, сортировка, работа с файлами » ege26 №30. » Ответить

ege26 №30.

s11kai: Здравствуйте, Константин Юрьевич. Помогите, пожалуйста, разобраться с условием задачи ege26 №30. 30) (Е. Джобс) Для уменьшения аварий на центральной дороге в городе X дорожная служба решила выровнять ямы. Размер объем (в литрах) новой ямы вычисляется как второе по величине значение среди объёмов самой этой ямы и двух соседних перед выравниванием. При этом размеры первой и последней ямы решили не менять. Ночью перед ремонтом дороги в городе X прошел проливной дождь, поэтому все ямы до краев заполнены водой. Сколько литров воды выльется обратно на дорогу после проведения ремонта? Входные данные. В первой строке входного файла 26-J5.txt находится число N – количество ям на дороге (натуральное число, не превышающее 10 000). В следующих N строках находятся значения объемов ям (все числа натуральные, не превышающие 25), каждое в отдельной строке. Запишите в ответе два числа: количество ям с наименьшим объемом и общий объем воды, вылившейся из ям обратно на дорогу. Пример входного файла: 8 10 12 8 6 20 12 16 10 При таких исходных данных после ремонта объем ям будет выглядеть следующим образом 10, 10, 8, 8, 12, 16, 12, 10. В ответе необходимо указать два числа – 2 и 14. 1) не совсем понятно - «Размер объем (в литрах) новой ямы вычисляется как второе по величине значение среди объёмов самой этой ямы и двух соседних перед выравниванием» 2) Вообще – то, при ремонте дорог, ямы принято засыпать, а здесь их наоборот углубляют с 6 до 8 и с 12 до 16 литров, но это можно списать на работу с похмелья. 3) А вот как получилось 14 литров, если до работ объем ям был 94 литра, а после ремонта стал 86, т.е. уменьшился на 8 Спасибо

Ответов - 10

Поляков: s11kai пишет: 1) не совсем понятно - «Размер объем (в литрах) новой ямы вычисляется как второе по величине значение среди объёмов самой этой ямы и двух соседних перед выравниванием» Здравствуйте! Например, до ремонта объём N-й ямы был 10 л, а объём двух соседних, (N-1)-й и (N+1)-й, соответственно 8 и 6 л. После ремонта объём N-й ямы будет вторым по величине числом из тройки (6, 8, 10), то есть, 8 л. 2) Вообще – то, при ремонте дорог, ямы принято засыпать, а здесь их наоборот углубляют с 6 до 8 и с 12 до 16 литров, но это можно списать на работу с похмелья. Я согласен, что легенда задачи не очень удачна. Но так придумал автор. :-) 3) А вот как получилось 14 литров, если до работ объем ям был 94 литра, а после ремонта стал 86, т.е. уменьшился на 8 Сравним объёмы ям до и после ремонта. Если объем ямы уменьшился, то из нее вылилась вода: 10 10 12 10 (вылилось 2) 8 8 6 8 20 12 (вылилось 8) 12 16 16 12 (вылилось 4) 10 10

s11kai: Простите пожалуйста, Константин Юрьевич, возник еще один вопрос Поляков пишет: После ремонта объём N-й ямы будет вторым по величине числом из тройки (6, 8, 10), то есть, 8 л. Правильно ли я понимаю, что для тройки чисел, например, (16,21,16) -> (16,16,21) вторым по величине числом из тройки будет число 21 так как первые два числа равнозначны. Еще раз, огромное Вам спасибо!

Поляков: s11kai пишет: Правильно ли я понимаю, что для тройки чисел, например, (16,21,16) -> (16,16,21) вторым по величине числом из тройки будет число 21 так как первые два числа равнозначны. Не совсем. Будет 16. Второе число в отсортированном по неубыванию списке.


s11kai: Поляков пишет: Не совсем. Будет 16. Второе число в отсортированном по неубыванию списке. Кажется понял - путаю понятия величины числа с его значением. Спасибо, Константин Юрьевич.

s11kai: Спасибо, Константин Юрьевич, но из условия не понятно как расположены ямы. Можно предположить, что они соприкасаются, то 2 л. из второй ямы перельются в четвертую, так как ее углубили ровно на 2 л., а из 7 в 6. Таким образом после ремонта дороги на ней останется 8 л. Пока писал комментарий, нашел аргумент для пояснения детям - нас спрашивают не сколько останется на дороге, а сколько именно выльется!

s11kai: Константин Юрьевич, мне право стыдно уже задавать свои вопросы, но еще один, по данной теме. Пытался реализовать приложенный ниже алгоритм на питоне: [pre2] data=[1,2,3] #проверено для троек: 1,1,1; 1,1,2; 1,2,2; 1,2,3 def F( a, b, c ): abc = sorted( [a, b, c] ) return abc[1] print(F(data[0], data[1], data[2])) [/pre2] в формулу Excel, и вот что получилось: =ЕСЛИ(И(A1=A2;A2=A3);A1;ЕСЛИ(И(A2>МИН(A1:A3);A2<МАКС(A1:A3));A2;ЕСЛИ(И(A3>=МИН(A1:A3);A3<МАКС(A1:A3));A3;A2))) проверил для троек: 1,1,1; 1,1,2; 1,2,2; 1,2,3 - вроде работает правильно, но очень уж длинно! Подскажите, пожалуйста, может быть существует функция или другая формула, но покороче моего "шедевра"

Поляков: s11kai пишет: в формулу Excel Предлагаю так: =СУММ(A1:A3)-МИН(A1:A3)-МАКС(A1:A3)

s11kai: Поляков пишет: Предлагаю так: =СУММ(A1:A3)-МИН(A1:A3)-МАКС(A1:A3) Оказывается это так просто, спасибо, Константин Юрьевич за красивую формулу через знакомые функции, а =НАИМЕНЬШИЙ(A1:A3;2) тоже работает, но не факт, что в нужный момент про нее вспомнишь

s11kai: увы, при обработке тройки 2,1,3 формула дает 1, стало быть нужно еще дополнять проверки ....

s11kai: Спасибо, я кажется нашел, это функция - НАИМЕНЬШИЙ



полная версия страницы