Niezbyt rozumiem ten twój kod, ale mogę Ci powiedzieć jak to powinno się zrobić. Masz 2 sposoby jeden w O(n log n), a drugi sprytniejszy w O(n). masz 2 wskazniki jeden lewy a drugi prawy liczby pomiedzy lewy i prawy lacznie traktujesz jako na przedziale, który jest w gąsienicy. I teraz trzymasz wszystkie liczby pomiędzy na multisecie i jak zastanawiasz się czy przesunąć to korzystasz z nierówności trójkąta. suma dwóch najmniejszych musi być większa niż sprawdzany. I Wtedy masz O(n log n), możesz też zamiast seta trzymać poprostu 2 wskazniki korzystając z tego, że najmniejsze to lewy wsk i sprawdzasz tylko te 2 najmniejsze. Niewiem, czy robisz to samo, czy cos innego, bo niezbyt kumam twoj kod.