C++ 如何在c++/STL?
我正试图在spoj上解决这个问题。我使用滑动窗口概念对其进行了编码,并使用最大堆存储当前窗口的元素。问题约束的数量级为10^5,我的提交文件出现SIGABRT错误。我在wiki上读到,如果出现内存泄漏或初始化大型数组时出现问题,则会导致此错误。我该怎么处理?long long,long long int,long long unsigned int,似乎不起作用。请帮忙。下面是我的代码: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
#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]
运行此代码时,我没有收到任何错误。或者astd::vector
可能?此外,您的问题说问题约束是10^5
,在您的问题中,您分配了a[1000001]
那可能是10^6
一个打字错误!告诉你:如果你不能再移动了,你可能也想检查一下,你有没有尝试删除你在程序开始时分配的内存?比如delete[]a
或者为什么不干脆尝试long int a[100001]
运行此代码时,我没有收到任何错误。或者astd::vector
可能?此外,您的问题说问题约束是10^5
,在您的问题中,您分配了a[1000001]
那可能是10^6
一个打字错误!告诉你:如果你不能再往前走,你可能也想检查一下