Аттракцион «Американские горки» представляет собой рельсовый трек, размещённый на опорах. Известна высота каждой опоры. Для рекламы аттракциона необходимо выделить один из его фрагментов (несколько подряд идущих опор с рельсовым треком) световой подсветкой. При этом необходимо выделить такой фрагмент трека, на котором была бы «горка» то есть на выделенном участке трека была бы точка, которая находилась бы строго выше начала и строго выше конца выделенного фрагмента трека.
Владелец аттракциона для экономии хочет найти подходящий участок минимальной длины, удовлетворяющий условию наличию «горки» на этом участке.
Входные данные
Первая строка входных данных содержит число N – количество опор аттракциона. Следующие N строк содержат информацию о высотах опор при движении от начала к концу аттракциона. Все числа натуральные, не превосходящие 105.
Выходные данные
Программа должна вывести два числа – номер первой и последней подходящей опоры. Опоры нумеруются числами от 1 до N. Если фрагмента, удовлетворяющего условиям, не существует, программа должна вывести одно число 0. Если подходящих ответов несколько, нужно вывести любой из них.
Система оценивания
Решение, правильно работающее только для случаев, когда все входные числа не превосходят 100, будет оцениваться в
В будет оцениваться решение, правильно работающее, когда все числа не превосходят 105.
Примеры
Ввод Вывод Пояснение
7
18
10
15
20
20
10
3
3 6
Дано 7 опор с высотами 18, 10, 15, 20, 20, 10, 3. Самый короткий участок, содержащий «горку» – это 15, 20, 20, 10. Он начинается опорой номер 3 и заканчивается опорой номер 6.
3
9
8
5
0
Высоты опор убывают, поэтому участка с «горкой» нет.
begin
// а)
writeln('Результаты сдачи экзамена:');
var a:=ArrRandom(15,2,5); a.Println; // генерируем и выводим массив оценок
var k:=a.Where(x->x=2).Count; // подсчитываем количество двоек
writeln('Не сдали экзамен: ',k,' чел. Это ',100*k/15:4:1,'%'); // выводим на эран результаты
// б)
writeln('Данные по продаже компьютеров:');
var b:=ArrRandom(7,5,20); b.Println; // генерируем и выводим результаты продаж
writeln('По возрастанию:');
b.Sorted.Println; // сортируем по возрастанию и выводим
end.
Пример:
Результаты сдачи экзамена:
3 3 3 2 4 3 4 4 3 3 5 2 2 5 5
Не сдали экзамен: 3 чел. Это 20.0%
Данные по продаже компьютеров:
16 20 16 14 5 18 16
По возрастанию:
5 14 16 16 16 18 20
// Внимание! Если программа не работает, обновите версию!
№1
begin
var n:=15;
var a:=ArrRandom(n,2,5); a.Println;
var k2:=a.Where(t->t=2).Count;
Writeln('Не сдали экзамен ',k2,' чел, что составляет ',k2/n*100:0:1,'%')
end.
Пример
4 3 3 4 5 4 3 4 3 5 4 5 2 5 2
Не сдали экзамен 2 чел, что составляет 13.3%
№2
begin
ArrRandom(7,15,40).Println.OrderBy(t->t).Println
end.
Пример
34 21 24 29 28 22 25
21 22 24 25 28 29 34
P.S. А объяснять тут нечего - все видно из текста программы.