我收到运行时错误,这有什么问题? 在删除if(Px [size-1] .ele> a)错误消失时! 我尝试使用的时候只有当我为零时仍然出现错误!
#include <iostream>
using namespace std;
#define f(i,n) for(i=0;i<n;i++)
#define f1(i,n) for(i=1;i<=n;i++)
#define ll long long
#define ld long double
#define MOD 1000000007
typedef struct{
int ele;
int pos;
int sum;
} vj;
int main()
{
int n,size,sum,i,a;
vj Px[1000000];
cin>>n;
size=sum=0;
f(i,n){
cin>>a;
sum+=a;
while(size){
if(Px[size-1].ele>a)
break;
size--;
}
Px[size].ele=a;
Px[size].pos=i+1;
Px[size].sum=sum;
size++;
}
//sum=P[0].ele*P[0].pos-P[0].sum;
//f(i,size-1)
// sum+=(P[i+1].ele*(P[i+1].pos-P[i].pos))-(P[i+1].sum-P[i].sum);
//cout<<size<<endl;
return 0;
}
答案 0 :(得分:2)
typedef struct{
int ele;
int pos;
int sum;
} vj;
int main() {
vj Px[1000000];
...
这是堆栈溢出。 MSVC的默认限制为1 MB堆栈大小。你摇摇欲坠这个限制。
我建议使用堆分配而不是依赖于该大小的堆栈局部变量。