Https://Community.Topcoder.Com/Longcontest/?Module=ViewProblemSolution&Pm=10390&Rd=13800&Cr=15805598&Subnum=5
Https://Community.Topcoder.Com/Longcontest/?Module=ViewProblemSolution&Pm=10390&Rd=13801&Cr=9987185&Subnum=2
Можешь из этих двух решений попробовать вытащить реализации.