Продолжаю готовиться к ЕГЭ решая задачки из задач Полякова, делюсь решением на C.
Условие
По каналу связи передается последовательность положительных целых чисел X1, X2, …; все числа не превышают 1000, их количество заранее неизвестно. Каждое число передается в виде отдельной текстовой строки, содержащей десятичную запись числа. Признаком конца передаваемой последовательности является число 0.
Участок последовательности от элемента XT до элемента XT+N называется подъемом, если на этом участке каждое следующее число больше предыдущего. Высотой подъема называется разность
XT+N — XT.
Напишите эффективную программу, которая вычисляет наибольшую высоту среди всех подъемов последовательности. Если в последовательности нет ни одного подъема, программа выдает 0. Программа должна напечатать отчет по следующей форме:
Получено … чисел
Наибольшая высота подъема: …
Размер памяти, которую использует Ваша программа, не должен зависеть от длины переданной последовательности чисел.
Решение
#include int main() { int input = 0, start = 0, before = 0, k = 0; do { scanf("%d", &input); if (input == 0) { printf("Получено %d чисел\nНаибольшая высота подъёма: %d", k, before-start); break; } k++; if (input > before) { before = input; } else { start = input; before = input; } } while (true); return 0; }