We consider the Modular Subset Sum problem: given a multiset X of integers from Z_m and a target integer t, decide if there exists a subset of X with a sum equal to t m. Recent independent works by Cardinal and Iacono (SOSA'21), and Axiotis et al. (SOSA'21) provided simple and near-linear algorithms for this problem. Cardinal and Iacono gave a randomized algorithm that runs in O(m \log m) time, while Axiotis et al. gave a deterministic algorithm that runs in O(m polylog m) time. Both results work by reduction to a text problem, which is solved using a dynamic strings data structure. In this work, we develop a simple data structure, designed specifically to handle the text problem that arises in the algorithms for Modular Subset Sum. Our data structure, which we call the shift-tree, is a simple variant of a segment tree. We provide both a hashing-based and a deterministic variant of the shift-trees. We then apply our data structure to the Modular Subset Sum problem and obtain two algorithms. The first algorithm is  randomized and matches the O(m \log m) runtime of the  algorithm by Cardinal and Iacono. The second algorithm is fully deterministic and runs in O(m \log m \cdot \alpha(m)) time, where \alpha is the inverse Ackermann function.
We consider the Modular Subset Sum problem: given a multiset X of integers from Z_m and a target integer t, decide if there exists a subset of X with a sum equal to t m. Recent independent works by Cardinal and Iacono (SOSA'21), and Axiotis et al. (SOSA'21) provided simple and near-linear algorithms for this problem. Cardinal and Iacono gave a randomized algorithm that runs in O(m \log m) time, while Axiotis et al. gave a deterministic algorithm that runs in O(m polylog m) time. Both results work by reduction to a text problem, which is solved using a dynamic strings data structure. In this work, we develop a simple data structure, designed specifically to handle the text problem that arises in the algorithms for Modular Subset Sum. Our data structure, which we call the shift-tree, is a simple variant of a segment tree. We provide both a hashing-based and a deterministic variant of the shift-trees. We then apply our data structure to the Modular Subset Sum problem and obtain two algorithms. The first algorithm is Monte-Carlo randomized and matches the O(m \log m) runtime of the Las-Vegas algorithm by Cardinal and Iacono. The second algorithm is fully deterministic and runs in O(m \log m \cdot \alpha(m)) time, where \alpha is the inverse Ackermann function.
A
Monte-Carlo
A
Las-Vegas