Minmax18. Дано целое число $$N$$ и набор из $$N$$ целых чисел. Найти количество элементов, содержащихся между первым и последним максимальным элементом. Если в наборе имеется единственный максимальный элемент, то вывести $$0$$.
Решение vombat:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
int main(void) { int n, lastmaxn = 0, firstmaxn = 0, r, max = 0; printf("N:"); scanf("%i", &n); for (int i = 1; i <= n; ++i){ printf("%i>",i); scanf("%i", &r); if ((r > max)||(i == 1)){ max = r; firstmaxn = i; } else if(r == max){ lastmaxn = i; } } printf("%i\n",lastmaxn > firstmaxn? lastmaxn - firstmaxn - 1: 0); return 0; } |
Другие задачи из раздела Minmax можно посмотреть здесь.
Решение придуманное в процессе танца с бубном)):
В последовательностях с единственным максимальным элементом, решение в шапке темы выдает результат -1, что по условию не корректно.
Позволил себе слегка модифицировать Ваш код.
Было:
Стало:
Спасибо, что не забываете этот сайт. Разместил ваше решение, к сожалению не глядя. Надеюсь в скором времени вернусь на сайт 🙂
Спасибо Вам за этот сайт!