C++ 如何在c++/STL?

C++ 如何在c++/STL?,c++,algorithm,stl,C++,Algorithm,Stl,我正试图在spoj上解决这个问题。我使用滑动窗口概念对其进行了编码,并使用最大堆存储当前窗口的元素。问题约束的数量级为10^5,我的提交文件出现SIGABRT错误。我在wiki上读到,如果出现内存泄漏或初始化大型数组时出现问题,则会导致此错误。我该怎么处理?long long,long long int,long long unsigned int,似乎不起作用。请帮忙。下面是我的代码: #include<iostream> #include<vector> #inclu

我正试图在spoj上解决这个问题。我使用滑动窗口概念对其进行了编码,并使用最大堆存储当前窗口的元素。问题约束的数量级为10^5,我的提交文件出现SIGABRT错误。我在wiki上读到,如果出现内存泄漏或初始化大型数组时出现问题,则会导致此错误。我该怎么处理?long long,long long int,long long unsigned int,似乎不起作用。请帮忙。下面是我的代码:

#include<iostream>
#include<vector>
#include<queue>
using namespace std;
typedef pair<long, long> Pair;
long  *a = new long[1000001], *output = new long[1000001];
long n, k;

void slidingWindowMax()
{
    priority_queue<Pair> Q;
    for(int i=0;i<k; i++)
        Q.push(Pair(a[i], i));

    for(int i=k; i<n; i++)
    {
        Pair p = Q.top();
        output[i-k] = p.first;

        while(p.second <= i-k)
        {
            Q.pop();
            p = Q.top();
        }

        Q.push(Pair(a[i], i));
    }
    output[n-k] = Q.top().first;

    for(int i=0;i<(n-k+1);i++)
    {
        cout << output[i] << " ";
    }
}



int main()
{
    cin >> n;
    for(int i=0;i<n;i++)
        cin >> a[i];
    cin >> k;

    slidingWindowMax();
    return 0;
}
#包括
#包括
#包括
使用名称空间std;
typedef对;
长*a=新长[1000001],*输出=新长[1000001];
长n,k;
void slidengwindowmax()
{
优先级队列Q;

对于(int i=0;id)您是否尝试删除在程序开始时分配的内存?如
delete[]a
或为什么不直接尝试
long int a[100001]
运行此代码时,我没有收到任何错误。或者a
std::vector
可能?此外,您的问题说问题约束是
10^5
,在您的问题中,您分配了
a[1000001]
那可能是
10^6
一个打字错误!告诉你:如果你不能再移动了,你可能也想检查一下,你有没有尝试删除你在程序开始时分配的内存?比如
delete[]a
或者为什么不干脆尝试
long int a[100001]
运行此代码时,我没有收到任何错误。或者a
std::vector
可能?此外,您的问题说问题约束是
10^5
,在您的问题中,您分配了
a[1000001]
那可能是
10^6
一个打字错误!告诉你:如果你不能再往前走,你可能也想检查一下