i具有m*3尺寸的2D矢量,其中第一个col:下范围:下col:second col:thix col:valut.value。n尺寸n(m
void build_tree(long long int *tree,long long int index,long long int s,long long int e)
{
if(s==e)
{
tree[index]=0;
return;
}
if(s>e)
return;
long long int mid=(s+e)/2;
build_tree(tree,2*index,s,mid);
build_tree(tree,2*index+1,s,mid);
tree[index]=max(tree[2*index],tree[2*index+1]);
return;
}
void update_range(long long int *tree,long long int index,long long int s,long long int e,long long int lower,long long int upper,int v)
{
if(s>upper || e<lower)
{
return;
}
if(s==e && s>=lower && e<=upper)
{
tree[index]=tree[index]+v;
return;
}
if(s>=e)
return;
long long int mid=(s+e)/2;
update_range(tree,2*index,s,mid,lower,upper,v);
update_range(tree,2*index+1,mid+1,e,lower,upper,v);
tree[index]=max(tree[2*index],tree[2*index+1]);
return;
}
long arrayManipulation(int n, vector<vector<int>> queries) {
/*int a[10000000];
// vector<int>a;
for(int i=0;i<n;i++)
a[i]=0;*/
long long int *tree=new long long int(4*n+1);
build_tree(tree,1,0,n-1);
for(int i=0;i<queries.size();i++)
{
update_range(tree,1,0,n-1,queries[i][0]-1,queries[i][1]-1,queries[i][2]);
}
return tree[1];
}
用于输入n = 10000000,M = 100000我正在遇到细分错误,我尝试了长时间的int而不是int,但是它仍然给我分割错误。
预期输出很长。
您没有显示MCVE,您应该。
没有一个人,很难确切说明发生了什么,但是我怀疑问题来自该代码(当前已注释(:
int a[10000000];
这个数组有多大?在典型的系统上,它长40,000,000个字节。在典型的Linux系统上,堆栈仅限于8Mib,该堆栈比数组的大小小,从而导致堆栈溢出。因此,您的问题是重复的。