Это проблема O (n), но без использования структур она становится O (n²).
Вот простое решение O (n²):
int main(){
int A[7] = {1, 2, 8, 2, 5, 0, 5};
int value, occurrences;
int maxValue = 99999999, maxOccurrences = 0;
for(int i = 0; i < 7; i++){
value = A[i]; occurrences = 0;
for(int j = 0; j < 7; j++) if(A[j] == value) occurrences++;
if(occurrences > maxOccurrences){
maxValue = value; maxOccurrences = occurrences;
}
else if(occurrences == maxOccurrences){
if(value < maxValue) {
maxValue = value;
maxOccurrences = occurrences;
}
}
}
cout<<maxValue<<" occurs "<<maxOccurrences<<" times"<<endl;
}
Мы инициализируем maxValue очень большое число, просто чтобы помочь тому факту, что если два числа встречаются одинаковое количество раз, будет выбрано самое низкое.
Тогда мы просто повторяем и считаем.
Возможно Оптимизация: предположим, вы ищете 5 в массиве. Всегда вы находите 5, добавляете вхождение к сумме и устанавливаете значение массива на -1, поэтому, когда вы в конечном итоге начинаете с него, вы знаете, что это -1, и вы можете пропустить этот элемент.