Я получаю ошибку во время выполнения при передаче некоторых значений - PullRequest
0 голосов
/ 10 апреля 2020

Ниже, я прилагаю свой код, может кто-нибудь сказать мне, почему я получаю ошибку во время выполнения?

Для ввода 1 5 1 2 1 3 1 правильный ответ - 2. Этот пример работает, но когда я поставить этот алгоритм на проверку, я получаю "Ошибка времени выполнения"

#include <bits/stdc++.h>
using namespace std;

int main()
{
      int z;
      cin >> z;
      for (int ii = 0; ii < z; ii++)
      {
        int k;
        cin >> k;
        vector <int> p(k,0);
        for (int i = 0; i < k; i++)
        {
            int m;
            cin >> m;
            p[m]++;
        }
        sort(p.begin(),p.end());
        int sm = p[0] + p.size()-1;
              for (int i = 1; i < p.size(); i++)
              {
                      int cm = p[i] + p.size()-i-1;
                      if(cm<sm)sm = cm;
              }
              cout << sm << endl;

      }
}

1 Ответ

0 голосов
/ 10 апреля 2020

Я не знаю, какой алгоритм вы пытаетесь реализовать, можете ли вы сказать, что это такое. Это выглядит примерно как медиана.

Однако я уверен, что выражение p[m]++ должно быть p[i]=m, потому что похоже, что вы пытаетесь заполнить свой вектор значениями, введенными пользователем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...