std::map
- это структура, которая связывает одно значение с одним уникальным ключом.
Эффект net в том, что каждый отдельный ключ может иметь только одно значение.
в случае map<int, int> mp
значение, связанное с mp[123]
, представляет собой одно целое число. В картах C ++ автоматически создаются несуществующие элементы, поэтому при первом доступе значение, связанное с mp[123]
, будет инициализировано значением 0
, и вы можете спокойно считать, используя mp[x]++
.
Сказав, что с помощью клавиш int
тот же эффект может быть достигнут с помощью простого массива. Если ключ плотный и максимальное значение ключа известно, вы можете просто выделить массив (вектор) и использовать ключ в качестве индекса в нем. Карта полезна, когда ключи редкие, не нумеруются c, или когда диапазон неизвестен.
В вашем конкретном случае диапазон клавиш, как представляется, [1 ... 100]. Это можно решить с помощью массива. Карта не нужна.
int main()
{
int n, mx = 0, x;
cin >> n;
int mp[101]{};
for (int i = 0; i < n; i++)
{
cin >> x; // 1 <= x <= 100 according to problem definition
mx = max(mx, ++mp[x]);
}
cout << mx << endl;
return 0;
}