代码可用于示例运行,但无法提交:Hackerrank问题

时间:2019-04-03 11:26:07

标签: c++

我正在尝试解决问题https://www.hackerrank.com/challenges/mini-max-sum/problem,但是我的代码提交失败。 15个测试用例中仅清除5个。我认为它与使用64位整数有关。我对此一无所知,是什么导致我的程序失败。

下面的程序展示了我的方法

void miniMaxSum(vector<int> arr) 
{
    int l = arr.size();
    sort(arr.begin(),arr.end());
    long long int min = arr[0] + arr[1] + arr[2] + arr[3];
    long long int max = arr[l - 1] + arr[l - 2] + arr[l - 3] + arr[l-4];
    cout<<min<<" "<<max<<endl;
}

编译器输出错误。我不知道我在做什么错,请帮忙。

1 个答案:

答案 0 :(得分:2)

您正在将左侧的值计算为int,然后将其分配给unsigned long long

为防止溢出,您应该将至少一个值强制转换为unsigned long long

long long int min = static_cast<long long int>(arr[0]) + arr[1] + arr[2] + arr[3];

例如,如果您使用double并且看到相同的行为,则同样。