Exercise 1: Greedy Problems and Dynamic Programming I