@Jepa

Как можно улучшить данный код?

На телевизионном шоу зрители голосуют за участников шоу, отправляя SMS-сообщение с номером участника. Определите победителя шоу на основе присланных SMS-сообщений.

Я написал вот такой код, но на максимальных значениях он даёт лимит памяти. А если убрать ресайз вектора то выйдет за границу вектора.
int n;
    cin >> n;
    int mxind = 0;
    int mxx = 0;
    for(int i = 0; i < n; i++)
    {
        int tmp;
        cin >> tmp;
        if(tmp > mxx)
        {
            a.resize(tmp+1);
            mxx = tmp;
        }
        if(tmp > mxind)
            mxind = tmp;
        a[tmp]++;
    }
    int mx = *max_element(a.begin(), a.end());
    for(int i = 0; i < mxind+3; i++)
    {
        if(a[i] == mx)
            cout << i << " ";
    }
  • Вопрос задан
  • 178 просмотров
Пригласить эксперта
Ответы на вопрос 1
vabka
@vabka
Токсичный шарпист
1. используй std::map для хранения количества голосов за каждого кандидата и int64_t для хранения номера кандидата.
2. Вот что первым выдаёт гугл на запрос "как найти элемент с максимальным value в std::map C++":
https://www.techiedelight.com/find-element-with-th...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы