In the concurrent range reporting (CRR) problem, the input is L disjoint sets S 1 , ..., S L of points in R d with a total of N points. The goal is to preprocess the sets into a structure such that, given a query range r and an arbitrary set Q ⊆ {1, ..., L}, we can efficiently report all the points in S i ∩ r for each i ∈ Q. The problem was studied as early as 1986 by Chazelle and Guibas [9] and has recently re-emerged when studying higher-dimensional complexity of orthogonal range reporting [2,3].We focus on the one-and two-dimensional cases of the problem.We prove that in the pointermachine model (as well as comparison models such as the real RAM model), answering queries requires Ω(|Q| log(L/|Q|) + log N + K) time in the worst case, where K is the number of output points. In one dimension, we achieve this query time with a linear-space dynamic data structure that requires optimal O(log N ) time to update. We also achieve this query time in the static case for dominance and halfspace queries in the plane. For three-sided ranges, we get close to within an inverse Ackermann (α(·)) factor: we answer queries in O(|Q| log(L/|Q|)α(L)+ log N + K) time, improving the best previously known query times of O(|Q| log(N/|Q|) + K) and O(2 L L + log N + K). Finally, we give an optimal data structure for three-sided ranges for the case L = O(log N ).
IntroductionWe consider concurrent range reporting (CRR) in twodimensional space. The dataset consists of L sets S 1 , ..., S L of points in R d , where L is potentially ω(1). We want to preprocess the sets into a structure such that, given a query range r and an arbitrary set Q ⊆ {1, ..., L}, we can efficiently report all the points in S i ∩ r for each i ∈ Q. See Figure 1. This is