How do you go about competitive programming then? Competitive programming is a sport. Like a sport it requires lot of dedication, persistence and practice to make it big in the sport. There are various platforms like SPOJ , codechef , topcoder and heackerrank to name a few. Like any sport you level up from base level 0 to higher levels. There are certain rules of contest that need to be followed.
It is very prestigious to win any of the global competition like ACM-ICPC or codejam. They have their own share of lucrative reward and provide a satisfaction to coder. These are a platform to assess your global standing as a coder. Don’t feel overwhelmed or depressed by a low rank. Not everybody is good with learning and developing algorithms. You need to keep practicing to keep your skill polished and improve it overtime. It takes time to get to top few ranks but the time and effort is worth it.
The most important aspect in learning algorithms is not their code or structure but rather their various implementations in different situation and how they can be modified or use them as inspiration for certain situations(correlation).
Even working under stress and time bound conditions contribute a lot to becoming a pro competitive coder and reap those rewards. Many companies use these platforms to shortlist potential candidates. It even prepares you for job interviews and technical rounds. Do maintain a good GPA though else you might not get a chance to sit in one of these.