Getting "runtime error (SIGSEGV) " error and i'm not getting the problem... can anyone help me to solve it ..
#include <bits/stdc++.h>
using namespace std;
#define MAX 50005
#define ll long long
int sn,arr[MAX];
struct node{
ll best,sum,lft,ryt;
node(ll a){
best = sum = lft = ryt = a;
}
void merge(node a,node b){
sum = a.sum+b.sum;
lft = max(a.lft, a.sum+b.lft);
ryt = max(b.ryt, a.ryt+b.sum);
best = max(sum, max(lft,ryt) );
}
}*segtree=NULL;
ll query(int i,int j,int ri,int rj,int curr){
if(rj<i || ri>j)
return 0;
if(ri<=i&&rj>=j)
return segtree[curr].best;
int mid = i + (j-1)/2,l=2*curr+1;
return query(i,mid,ri,rj,l) + query(mid+1,j,ri,rj,l+1);
}
void build(int i,int j,int curr){
if(i==j){
segtree[curr] = node(arr[i]);
return;
}
int l = 2*curr+1,r,mid=i +(j-i)/2;
r = 2*curr+2;
build(i,mid,l);
build(mid+1,j,r);
segtree[curr].merge(segtree[l],segtree[r]);
}
void init(int n){
sn = ceil(log2(n)+1);
sn = 2*pow(2,sn);
segtree = (node*)malloc(sn * sizeof(node));
build(0,n-1,0);
}
int main() {
int n,q,ri,rj;
cin>>n;
for(int i=0;i<n;i++)
cin>>arr[i];
init(n);
build(0,n-1,0);
cin>>q;
while(q--){
cin>>ri>>rj;
cout<<query(0,n-1,ri-1,rj-1,0)<<'\n';
}
free(segtree);
return 0;
}
thanks for the help!!