我正在尝试在spoj上解决此问题arraysub。我使用滑动窗口概念编码它,我使用max-heap来存储当前窗口的元素。问题约束是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;
}