Количество повторений максимального элемента в последовательности

Условие (переведено):

Написать программу, которая получает целое число N, а затем последовательность из N целых чисел. Программа должна вывести количество повторений максимального элемента в последовательности. Запрещено использовать массивы

Примеры:

Входные данные
0
Результат работы
0

Входные данные
5 2 6 6 3 -5
Результат работы
2

Входные данные
10 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1
Результат работы
10

#include <iostream>

int main()
{
    int n;
    std::cin >> n;
    int i, j, count = 0;
    for (i = 0; i < n; i++)
    {
        std::cin >> n;
        for(j = i + 1; j < n; j++)
        {
            if (n == i && n == j)
            {
                ++count;
                break;
            }
        } 
    }
    std::cout << "repeated elements  count" << count;
}

Ответы (3 шт):

Автор решения: Стас

Если перевод

Программа должна вывести количество повторений максимального элемента в последовательности

правильный, то вот:

#include <iostream>

using namespace std;

int find_reps(int n){
    int num, reps = 0;
    long long max = -2147483649ll;

    if (n == 0 || n == 1){cin >> num; return 0;}

    for (int i = 0; i < n; ++i){
        cin >> num;
        if (num > max){
            max = num;
            reps = 0;
        }
        if (num == max) reps++;

    }
    return reps;
}

int main(){
    int n;
    cin >> n;
    cout << find_reps(n);
    return 0;
}

Здесь создаётся переменная max с значением -2147483649 (чтобы любое число типа int было больше его). Если n == 1, можно сразу вернуть 0 повторений. Далее в цикле вводятся значения (их можно писать через пробел). Если число большего максимума (значит, это новый максимум) - оно сохраняется в переменную и количество повторений обнуляется (нашли новый максимум, он не повторился ещё ни разу). Ну и если введённое число равно максимуму, значит оно повторяется. Когда цикл завершится - можно вернуть повторения.

→ Ссылка
Автор решения: Harry

В измененном варианте задание - вот, все просто:

#include <iostream>

using namespace std;


int main()
{
    int N;
    cin >> N;
    if (N == 0) 
    {
        cout << "0\n";
        return 0;
    }
    int max, maxcount = 1;
    cin >> max;
    for(int i = 1, m; i < N; ++i)
    {
        cin >> m;
        if (max < m)
        {
            max = m;
            maxcount = 1;
        }
        else if (max == m)
        {
            maxcount++;
        }
    }
    cout << maxcount << endl;
}
→ Ссылка
Автор решения: Vardan
#include <iostream>

int main() {
int n;
std::cin >> n;
int num, max, count;
if(n == 1){
std::cin >> num;
}
for(int i = 0; i < n; ++i) {
  std::cin >> num;
  if(num > max) {
    max = num;
    count = 0;
  }
  if(num == max) {
    count++;
  }
 }
  std::cout << count;
 }
→ Ссылка