some one please help me my code is giving SIGSEGV runtime error!!
i hv deleted my alocated dymanic merory location also...
here is my code .....
#include<iostream>
#include<algorithm>
#include<cmath>
#include<string.h>
using namespace std;
void segment_tree(int node,int l,int r,int *a,int *arr){
if(l==r)
a[node]=l;
else{
int mid=(l+r)/2;
segment_tree(2*node,l,mid,a,arr);
segment_tree(2*node+1,mid+1,r,a,arr);
if(arr[a[2*node]]<=arr[a[2*node+1]])
a[node]=a[2*node];
else
a[node]=a[2*node+1];
}
}
int query(int node,int start,int end,int *a,int *arr,int i,int j){
if(i>end || j<start)
return -1;
if(i<=start && j>=end)
return a[node];
int mid=(start+end)/2;
int p1=query(2*node,start,mid,a,arr,i,j);
int p2=query(2*node+1,mid+1,end,a,arr,i,j);
if(p1==-1)
return p2;
if(p2==-1)
return p1;
if(arr[p1]<=arr[p2])
return p1;
else
return p2;
}
int main(){
int t,cs=0;
scanf("%d",&t);
while(t--){
int n,q,arr[1005];
scanf("%d%d",&n,&q);
for(int i=0;i<n;i++)
scanf("%d",&arr[i]);
//making a new array to store location
int x=(int)(ceil(log2(n)))+1;
int size = 2*(int)pow(2.0,x);
int *a=new int[size];
memset(a,-1,sizeof(a));
segment_tree(1,0,n-1,a,arr);
/*for(int i=0;i<size;i++)
cout<<a[i]<<" ";*/
printf("Scenario #%d:\n\n",++cs);
while(q--){
int i,j;
scanf("%d%d",&i,&j);
int loc=query(1,0,n-1,a,arr,i-1,j-1);
printf("%d\n",arr[loc]);
}
delete[] a;
//end of one test case
}
}