The optimization of the simultaneous use of shared resources is a challenging problem with numerous practical applications. Suppose there is a common resource required by a set of jobs for their execution. Each job has a duration, and a set of feasible time intervals when it can be executed, and requires one unit from the resource throughout its execution. The objective is to minimize a separable convex function of the load of the resource throughout the scheduling horizon. In some applications, the time horizon may be partitioned into disjoint time intervals and for each time interval a distinct convex cost function may be given. Then the cost of a solution is determined as a sum of the costs computed separately for each interval with the corresponding convex cost function. When the duration of each job is one time unit, and there is only one convex cost function, then the offline problem was investigated by e.g., Hajek et al. (1990), Harvey et al. (2006) and Burcea et al. (2016). In the talk, we present a new, easier proof of the correctness of the algorithm of Burcea et al. (2016) for solving the problem with unit-time jobs and a single convex cost function and we also provide an efficient implementation of their method. The model with unit-time jobs can be extended by allowing preemptive jobs of arbitrary sizes with several feasible time intervals for each job, and several convex cost functions. We reduce the problem to a minimum-cost-flow computation in an appropriate network. We show that if there is only one convex cost function in the input of the preemptive problem, then it suffices to optimize the (·) 2 function to obtain 10 a feasible solution optimal for any convex cost function, and this leads to more efficient algorithms.