Матч 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;

  }

};