Myslím si, že chyba je na tomto riadku:
result_array[i] = input_array[i];
Špeciálne číslo na i-tom indexe vstupu nemusí byť nutne uložené na i-tom indexe výstupu.
Vstupné pole môže obsahovať najskôr nejaké čísla, ktoré nie sú špecialne a povedzme, že prvé špeciálne číslo bude vo vstupnom poli na indexe 3.
Toto prvé špeciálne číslo pochopiteľne nechceš uložiť vo výstupnom poli na index 3, ale na index 0.
Chceš, aby bolo i-té nájdené špeciálne číslo uložené na i-tom indexe výstupu.
Správne by malo teda byť:
result_array[totally] = input_array[i];