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*xoppure(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 usicinecoutma 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