@dsrk_dev

Как решить задачу на паскале?

В этом году третий раз одна известная компания проводит соревнование по программированию искусственного интеллекта для игровых стратегий. В этот раз участникам предложили написать искусственный интеллект для управления командой хоккеистов.
После того, как стратегия была запрограммирована, Вася отправил ее в систему. Проведя ряд тестовых боев, она попала в песочницу и начала сражаться со стратегиями других участников. У каждого участника песочницы есть свой рейтинг, который показывает успешность отправленного решения. После каждого системного сражения он может измениться. Все колебания рейтинга можно увидеть на персональной странице участника в виде графика.
Анализировать данные — скучное и утомительное занятие, к тому же Вася занят написанием очередной версии своей стратегии. Но ему очень хочется узнать наиболее удачный и наиболее провальный период выступления своего искусственного интеллекта. Удачным периодом Вася считает такой период, когда рейтинг не понижался, а провальным, соответственно, когда рейтинг не рос. Наиболее удачным периодом Вася считает такой удачный период, на котором произошел наибольший рост рейтинга, а наиболее неудачным считает такой период, на котором произошло наибольшее падение. Помогите Васе по исходным данным найти изменения рейтинга за эти периоды.
Формат входных данных
В первой строке входного файла записано целое число N (1 ≤ N ≤ 105) — количество данных. Во второй строке через пробел записаны N целых неотрицательных чисел, не превосходящих 109 — величина рейтинга после каждой игры в хронологическом порядке.
Формат выходных данных
В выходной файл выведите два числа — на сколько вырос рейтинг за наиболее удачный период и на сколько упал за наиболее провальный.
Пример
input.txt output.txt
3
1 2 4 3 0

5
0 3 5 2 3 5 3

Как это решать? может у коговонибудь хоть идеи есть?
  • Вопрос задан
  • 5775 просмотров
Решения вопроса 1
AnnTHony
@AnnTHony
Интроверт
Удачным периодом Вася считает такой период, когда рейтинг не понижался, а провальным, соответственно, когда рейтинг не рос. Наиболее удачным периодом Вася считает такой удачный период, на котором произошел наибольший рост рейтинга, а наиболее неудачным считает такой период, на котором произошло наибольшее падение. Помогите Васе по исходным данным найти изменения рейтинга за эти периоды.

Из этого следует, что нужно проходить входной массив чисел от начала до конца. Если каждое последующее число больше предыдущего - значит это один из удачных периодов. Запоминаем первое число, с которого начался рост показателей, и последнее, на котором он стал снижаться. Разница между ними и будет показателем роста рейтинга.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Можно без массива решить
var
	n, a, oldA, nu, np, u, p, i: integer;
begin
	readln(n); read(oldA);
	nu:= 0; np:= 0; u:= 0; p:= 0;
	for i:= 2 to n do
	begin
		read(a);
		if a > oldA then
		begin
			u:= u+a-oldA; p:= 0;
			if nu < u then nu:= u;
		end;
		if a < oldA then
		begin
			p:= p+oldA-a; u:= 0;
			if np < p then np:= p;
		end;
		oldA:= a;
	end;
	writeln(nu, ' ', np);
end.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы