En primer lugar, tienes un return 0; dentro dle while. Cuando llegue a ese punto, se va a terminar la ejecución.
Y luego, bueno, el segundo cin>>k está dentro del if, por tanto, solo llegará a pedir otro número si se cumple esa condición.
Y luego, bueno, el segundo cin>>k está dentro del if, por tanto, solo llegará a pedir otro número si se cumple esa condición.