Вещи могут потерпеть неудачу, и когда вы используете что-то, что может потерпеть неудачу, вы должны проверить, если это произошло или нет. В частности std::max_element
возвращает ...
Итератор для наибольшего элемента в диапазоне [first, last). Если несколько элементов в диапазоне эквивалентны наибольшему элементу, возвращается итератор к первому такому элементу. Возвращает последнее, если диапазон пуст.
Вы должны изменить это
int minel=*min_element(nums.begin(),nums.end());
на
auto it = min_element(nums.begin(),nums.end());
if (it != nums.end()) {
auto minel = *it;
} else {
// do not use it
}
В качестве альтернативы проверьте, если nums
пусто один раз в начале функции. Код, похоже, для онлайн-конкурса. Проверьте требования, если пустой ввод является допустимым, вам необходимо обработать его. Если пустой вектор не является обязательным требованием, возможно, у вас есть ошибка в коде, которую вы не показывали.