Complete the following coding tasks: (a) Given a list of transactions, each with userId and amount (credits positive, debits negative), compute the final balance for each userId. Return a map from userId to balance. Handle large inputs efficiently and specify time/space complexity. (b) Given an array of positive integers nums and a list of targets, for each target find the minimal prefix length k such that sum(nums[0..k-1]) >= target; return -1 if no such k exists. Implement using a prefix-sum array and binary search, and analyze complexity. (c) For an immutable integer array and a small number of range-sum queries [L, R] with no updates, write a simple recursive divide-and-conquer function to compute the sum for a given query. Then explain when you would instead build a segment tree (e.g., many queries and/or updates) and compare the trade-offs.