As I progress through Codeforces and competitive programming in general, I've noticed that the most advanced users tend to apply mathematical proof thinking and don't start coding until they've convinced themselves the solution is correct, even for greedy non-exactly-math problems.
For me, these insights usually come intuitively, but intuition alone isn't always reliable.
Do you recommend practising this more rigorous approach? If so, how would you go about learning it? Is there any resource you'd suggest, or is it something that develops naturally over time out of necessity? I'm also curious whether it's more common here simply because there are more mathematicians than programmers on the platform. Thanks in advance.








I majored in math during college, so maybe I can shed a bit of light on this, though there are people on here that are way more experienced than me and can probably give more eye opening insight.
Most of the time, I deduce solutions logically, which is a form of proof in and of itself. Other times, I have an intuitive suspicion which I then try to verify rigorously. If you choose to go down this path, just make sure you're not wasting time during contests writing out proofs unless the state is too complex to manage in your head all at once. For a lot of people, high dimensional DP (4D or 5D) is an example of when you'd want to use pen and paper.
I have a feeling that if I decide to commit to competitive programming and solve like a thousand more problems, instead of needing to logically deduce solutions to most problems I will have that "intuitive suspicion" for most problems and only need to verify it. Verifying something works is generally easier than deriving it.