Здесь говорится о действии, которое будет завершено к определенному моменту в будущем (до того, как ты сможешь пробежать марафон). Это Future Perfect. Поэтому правильный вариант – will have spent.
Ответ: a. will have spent