
C. Анализ рейтинга Ограничение времени 1 секунда Ограничение памяти 64Mb Ввод стандартный ввод
или input.txt Вывод стандартный вывод или output.txt В этом году третий раз одна известная компания проводит соревнование по программированию искусственного интеллекта для игровых стратегий. В этот раз участникам предложили написать искусственный интеллект для управления командой хоккеистов. После того, как стратегия была запрограммирована, Вася отправил ее в систему. Проведя ряд тестовых боев, она попала в песочницу и начала сражаться со стратегиями других участников. У каждого участника песочницы есть свой рейтинг, который показывает успешность отправленного решения. После каждого системного сражения он может измениться. Все колебания рейтинга можно увидеть на персональной странице участника в виде графика. Анализировать данные — скучное и утомительное занятие, к тому же Вася занят написанием очередной версии своей стратегии. Но ему очень хочется узнать наиболее удачный и наиболее провальный период выступления своего искусственного интеллекта. Удачным периодом Вася считает такой период, когда рейтинг не понижался, а провальным, соответственно, когда рейтинг не рос. Наиболее удачным периодом Вася считает такой удачный период, на котором произошел наибольший рост рейтинга, а наиболее неудачным считает такой период, на котором произошло наибольшее падение. Помогите Васе по исходным данным найти изменения рейтинга за эти периоды. Формат ввода В первой строке входного файла записано целое число N (1 ≤ N ≤ 105) — количество данных. Во второй строке через пробел записаны N целых неотрицательных чисел, не превосходящих 109 — величина рейтинга после каждой игры в хронологическом порядке. Формат вывода В выходной файл выведите два числа — на сколько вырос рейтинг за наиболее удачный период и на сколько упал за наиболее провальный. Пример 1 Ввод 1 0Вывод0 0 Пример 2 Ввод 10 110 61 31 1 95 47 37 34 10 119 Вывод 109 109

Ответы на вопрос

Ответ:
Python 3.6
n = int(input())
a = [int(i) for i in input().split()]
up, now, max_, min_ = False, 0, 0, 0
if n == 1:
print('0 0')
else:
for i in range(1, n):
if a[i - 1] < a[i]:
if not up:
up = True
now = 0
now += a[i] - a[i-1]
if now > max_:
max_ = now
if a[i-1] > a[i]:
if up:
up = False
now = 0
now += a[i-1] - a[i]
if now > min_:
min_ = now
print(max_, min_)
PascalABC.NET 3.5.1
Program c_contest;
var Data: array of longword;
i, n, count, max, min, now: longword;
up: boolean;
F: textfile;
begin
Assign(F, 'input.txt');
Reset(F);
readln(F, n);
SetLength(Data, n);
for i := 0 to n-1 do
begin
read(F, Data[i]);
end;
Close(F);
if n = 1 then write('0 0')
else
begin
for i := 1 to n-1 do
begin
if Data[i-1] < Data[i] Then
begin
if not up Then
begin
up := True;
now := 0;
end;
now := now + (Data[i] - Data[i-1]);
if now > max Then max := now;
end;
if Data[i-1] > Data[i] Then
begin
if up Then
begin
up := False;
now := 0;
end;
now := now + (Data[i-1] - Data[i]);
if now > min Then min := now;
end;
end;
write(max, ' ',min);
end;
end.
Объяснение:
По коду видно



Вы хотите написать программу для анализа изменений рейтинга в хронологическом порядке. Вам нужно вычислить, на сколько вырос рейтинг за наиболее удачный период и на сколько упал за наиболее провальный период. Вот пример, как можно решить эту задачу на Python:
pythondef analyze_rating_changes(N, ratings):
max_up = 0
max_down = 0
current_up = 0
current_down = 0
for i in range(1, N):
if ratings[i] > ratings[i - 1]:
current_up += 1
current_down = 0
max_up = max(max_up, current_up)
elif ratings[i] < ratings[i - 1]:
current_down += 1
current_up = 0
max_down = max(max_down, current_down)
else:
current_up = 0
current_down = 0
return max_up, max_down
# Чтение входных данных
N = int(input())
ratings = list(map(int, input().split()))
# Анализ изменений рейтинга
max_up, max_down = analyze_rating_changes(N, ratings)
# Вывод результатов
print(max_up, max_down)
Вы можете вставить этот код в файл main.py
, затем создать файл input.txt
с входными данными (как в примере ввода) и выполнить программу, чтобы получить результаты в соответствии с форматом вывода.


Похожие вопросы
Топ вопросов за вчера в категории Информатика







Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili