How are real life algorithms different from competitive programming algorithms? How are the algorithms studied in textbooks different from those in the real world that are used by software companies like Google, Amazon, and Uber etc.?