A framework for personalized competitive programming training