Матч
259, Статистика соревнований (CompetitionStatistics)
Дивизион 2,
Уровень 1
Имеется массив ratingChanges,
указывающий на состояние рейтинга игрока в хронологическом порядке. Необходимо
найти наибольшее количество последовательных соревнований, во время которых
рейтинг игрока оставался положительным. Число 0 положительным не является.
Класс: CompetitionStatistics
Метод: int
consecutiveGrowth(vector<int> ratingChanges)
Ограничения: ratingChanges содержит
от 1 до 50 элементов, -1000 £
ratingChanges[i] £ 1000.
Вход. Массив чисел ratingChanges.
Выход. Наибольшее количество последовательных соревнований, во
время которых рейтинг игрока являлся положительным.
Пример входа
ratingChanges |
{30, 5, -5, 3, 3, 1} |
{-1, -5, -9} |
{-6, 13, 15, -11, 12, 12, 33, 12, -1} |
Пример выхода
3
0
4
РЕШЕНИЕ
обработка массива
Для каждой последовательности
положительных чисел считаем ее длину. Среди всех длин находим наибольшую.
ПРОГРАММА
#include <cstdio>
#include <vector>
using namespace std;
class CompetitionStatistics
{
public:
int consecutiveGrowth(vector<int> ratingChanges)
{
int i, max, c;
for(i = max = c = 0; i <
ratingChanges.size(); i++)
{
if (ratingChanges[i] > 0) c++;
else
{
if (c > max) max = c;
c = 0;
}
}
if (c > max) max = c;
return max;
}
};