data structures - Segment Trees in Solving Stabbing Queries -


where possible find reference implementation of segment trees in solving stabbing problem? stabbing problem asks return intervals (from predefined set of m intervals of form [a, b], 1 <= <= b <= n n given) containing given point q.

corner case: intervals of 1 point [a, a].

until managed following code, surely not work , can't find bug:

    int n, m, x[100005], y[100005], q;     list< int > segm[200005];     //search q in segment tree     void segmquery(int node, int left, int right)     {         (list<int>::iterator = segm[node].begin(); != segm[node].end(); i++)         {             //process segment         }         if (left < right)         {             int middle = left + (right - left) / 2;             if (q <= middle)                 segmquery(2 * node, left, middle);             if (q > middle)                 segmquery(2 * node + 1, middle + 1, right);         }     }     //add q-th segment tree     //segment denoted x[q], y[q]     void segmadd(int node, int left, int right)     {         if ((x[q] <= left) && (right <= y[q]))             segm[node].push_back(q);         else         {             int middle = left + (right - left) / 2;             if (x[q] <= middle)                 segmadd(2 * node, left, middle);             if (y[q] > middle)                 segmadd(2 * node + 1, middle + 1, right);         }     } 


Comments

Popular posts from this blog

matlab - Deleting rows with specific rules -

jquery - How would i go about shortening this code? And to cancel the previous click on click of new section? -