Nie zrobiłeś tego. Funkcja ccw zwraca prawdę czyli, że punkt nie jest częścią otoczki jeżeli tworzy on skręt w prawo albo jest współliniowy (det >= 0). Czyli tak naprawdę wykluczasz punkty współliniowe, a dopiero potem je dodajesz w dalszej części algorytmu. To jest zdecydowanie nieoptymalne rozwiązanie. Zamiast tego powinieneś wykluczać tylko te punkty, które są skrętem w prawo czyli det > 0 w funkcji ccw. Wtedy to późniejsze dodawanie punktów współliniowych nie jest potrzebne. Przy takim podejściu i odpowiednim sortowaniu, o którym pisałem wyżej dostaniesz AC.
PS. Skoro x i y są int64_t to po co det w ccw jest typu double? Lepiej żeby też był int64_t, po pierwsze szybciej po drugie nie tracisz precyzji.