Форум » Массивы, сортировка, работа с файлами » Задача 26.30. автор Е. Джобс » Ответить

Задача 26.30. автор Е. Джобс

nikson: Очень тяжело воспринимается условие задачи 26.30. Скорее всего автор, когда создавал условие четко представлял задачу. Но для пользователя осмыслить тяжело, даже приведенный пример не помогает. Вопросы к автору по условию: 1) выровнять ямы - значит сделать их объемы одинаковые? 2) «Новая яма будет иметь второй по величине объем (в литрах) среди её самой и двух соседних ям». Как я понял, что создается еще одна яма? Если нет, то как у новой ямы объем может быть различный, чем у двух соседних, когда их выравнивают? 3) Вопрос по приведенному примечанию к примеру: Пример входного файла: 8 10 12 8 6 20 12 16 10 «после ремонта объем ям будет выглядеть следующим образом 10, 10, 8, 8, 12, 12, 12, 10». 4) Первое число 10 и последнее 10 – из условия ясно, что размеры первой и последней ямы решили не менять. 5) Второе число 10. Как я понял это (12+8)/2 = 10 . И число 10 записали вместо 12, а 2 литра вылилось на дорогу. Но вопрос, что это за выравнивание, когда было 12 и 8, а осталось 10 и 8? Просьба к автору, если возможно, или подкорректировать условие или подробнее расписать как появились числа 10, 10, 8, 8 и т.д. Тогда можно четко понять условие.

Ответов - 3

EugeneJobs: Новая яма будет иметь второй по величине объем (в литрах) среди её самой и двух соседних ям. Что конкретно тут непонятно? Зачем вы берете среднее арифметическое? В каком месте это написано? Пример. Берем яму №2 10, 12 и 8. Второй по величине объем - 10 литров. Поэтому и яма станет 10 литров. Новая яма - обновленная старая, единственное что я могу заметить, как не однозначное условие. > Но вопрос, что это за выравнивание, когда было 12 и 8, а осталось 10 и 8? Вот такое выравнивание, которое описано в условии. Если обратите внимание на начальное состояние и конечное, то заметите, что перепады стали значительно меньше. Значит и дорога стала "ровнее".

nikson: Спасибо!

sch12smirnova: var N,S,C,k: integer; begin Assign(input, '26-J5.txt'); Read(N);S:=0; var data := ReadArrInteger(N); var a := ArrFill(N,0); a[0]:=data[0];a[N-1]:=data[N-1]; for var i:=1 to N-2 do begin C:=data; if data=Max(data[i-1],data,data[i+1]) then C:=Max(data[i-1],data[i+1]) else if data<Min(data[i-1],data[i+1]) then C:=Min(data[i-1],data[i+1]); if C<data then S:=S+data-C; a:=C; end; C:=a.Min;k:=0; for var i:=0 to N-1 do begin if a=C then k:=k+1 end; Println(k,S); end.




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