>>108572739
queries
.grouped {
[$0[2], $0[0] % $0[2]]
}
.mapValues {
$0.map { ($0[0] / $0[2], $0[0] / $0[2] + ($0[1] - $0[0]) / $0[2], $0[3]) }
}
.reduce(into: nums) { [mod = 1000000007] (nums: inout [Int], element: (key: [Int], value: [(l: Int, r: Int, v: Int)])) in
element
.value
.reduce(into: Array(repeating: 1, count: nums.count / element.key[0] + 1)) { (products: inout [Int], query: (l: Int, r: Int, v: Int)) in
zip(
[query.l, query.r + 1],
[query.v, String(mod - 2, radix: 2).reduce(1) { $0 * $0 % mod * ($1 == "1" ? query.v : 1) % mod }]
Comment too long. Click here to view the full text.