Dato che questo problema è essenzialmente una competizione per chi ha l’input più veloce, dubito che nessuno che l’ha risolto ti sveli i suoi segreti.
In ogni caso ti posso dare qualche commento sul tuo codice:
-
register
è una keywork deprecata quindi evita di usarlo; - scrivere
(x<<1)+(x<<3)
è inutile e rende solo il codice più difficile da leggere. L’assembly che viene generato scrivendo10*x
oppure(x<<1)+(x<<3)
non solo è identico, ma lo shift non viene nemmeno usato; - usare
ios_base::sync_with_stdio(false)
può senz’altro farti guadagnare un po’ di tempo quando usicin
ecout
ma in questo caso non li usi quindi è abbastanza inutile quella parte; - potrai aver già intuito che la parte lenta del tuo codice è
getchar_unlocked
. Prova a dare un’occhiata alle system call di linux e vedi se trovi qualche alternativa