C++ Can';t通过测试(Kadane';s算法)

C++ Can';t通过测试(Kadane';s算法),c++,algorithm,C++,Algorithm,我必须在一维数组中找到最大和(1经典之一:输入只包含INT\u MIN或总和为INT\u MIN的整数集。简单猜测。哪个测试失败得更准确?测试没有显示输入是什么,也没有显示输出应该是什么。我只得到一个错误,即它是错误的output@Adomas如果有多个子序列具有相同的maximum sum不应该是一个子数组吗?如果我们要处理子序列,问题就很简单了。总和可以达到210^10,高于2^31,maxintvalue #include <bits/stdc++.h> using name

我必须在一维数组中找到最大和(1经典之一:输入只包含
INT\u MIN
或总和为
INT\u MIN
的整数集。简单猜测。哪个测试失败得更准确?测试没有显示输入是什么,也没有显示输出应该是什么。我只得到一个错误,即它是错误的output@Adomas如果有多个子序列具有相同的maximum sum不应该是一个子数组吗?如果我们要处理子序列,问题就很简单了。总和可以达到210^10,高于2^31,max
int
value
#include <bits/stdc++.h>

using namespace std;

vector<int> adj;
int kStart = 0, kEnd = 0;

void getOutput()
{
    ofstream output("max.out");
    output << kStart + 1 << " " << kEnd + 1;
    output.close();
}

void kadane()
{
    int max_global = INT_MIN, max_current = 0, kS = 0;

    for(int i = 0; i < adj.size(); i++)
    {
        max_current += adj[i];

        if(max_current > max_global || (max_current == max_global && i - kS < kEnd - kStart))
        {
            max_global = max_current;
            kStart = kS;
            kEnd = i;
        }

        if(max_current < 0)
        {
            max_current = 0;
            kS = i + 1;
        }
    }
}

void getData()
{
    ifstream input("max.in");

    int n; input >> n;

    for(int i = 0; i < n; i++)
    {
        int num; input >> num;
        adj.push_back(num);
    }

    input.close();
}

int main()
{
    getData();
    kadane();
    getOutput();

    system("pause");
}