Stanford Algorithm Design and Analysis