## Editorial for IOI '11 P3 - Rice Hub

Remember to use this editorial only when stuck, and not to copy-paste code from it. Please be respectful to the problem author and editorialist.
Submitting an official solution before solving the problem yourself is a bannable offence.

The key insight to solving this problem is the observation that for any rice fields located at , the transportation cost from all these fields is minimized by placing the rice hub at a median. For example, when , the hub should be at , and when , placing it between and is optimal. In this problem, we will place the rice hub at for simplicity. Following this observation, we denote a solution by a sequence and let denote the length of , which is the solution's value (the number of rice fields whose rice will be transported to the hub). The cost of is , where is the -th element of .

#### An ~\mathcal O(R^3)~ solution

Armed with this, we can solve the task by a guess-and-verify algorithm. We try all possible lengths of (ranging between and ). Next observe that in any optimal solution , the rice fields involved must be contiguous; that is, is necessarily for some . Therefore, there are solutions of length . For each choice of , we compute and the transportation cost in time and check if it is within the budget . This leads to an algorithm, which suffices to solve subtask 2.

#### An ~\mathcal O(R^2)~ solution

To improve it to , we will speed up the computation of . Notice that we are only dealing with consecutive rice fields. Thus, for each , the cost can be computed in after precomputing certain prefix sums. Specifically, let be the sum of all coordinates to the left of rice field , i.e., and . Then, if , is given by , where . This algorithm suffices to solve subtask 3.

#### An ~\mathcal O(R \log R)~ solution

Applying a binary search to find the right length in place of a linear search improves the running time to and suffices to solve all subtasks.

#### An ~\mathcal O(R)~ solution

We replace binary search with a variant of linear search carefully designed to take advantage of the feedback obtained each time we examine a combination of rice fields. In particular, imagine adding in the rice fields one by one. In iteration , we add and find (1) , the best solution that uses only (a subsequence of) the first rice fields (i.e., ), and (2) , the best solution that uses only (a subsequence of) the first rice fields and contains . This can be computed inductively as follows. As a base case, when , both and are just and cost , which is within the budget . For the inductive case, assume that and are known. Now consider that is appended with , denoted by , if the cost is at most , or otherwise it is the longest prefix of that costs at most . Furthermore, is the better of and . To implement this, we represent each by its starting point and ending point ; thus, each iteration involves incrementing and possibly , but is always at most . Since takes to compute, the running time of this algorithm is and suffices to solve all subtasks.