How is competitive programming different from real-life programming?