CS 161: Design and Analysis of Algorithms — Stanford Root