Корректно: на олимпиаде.
Оба варианта согласования грамматически корректны.
Корректно: на Олимпиаде (но: в соревнованиях).
Не видим в вопросе 225548 указанного Вами ответа. Правильно: сочинская Олимпиада, пекинская Олимпиада.
Лучше всего: (школьная) олимпиада по истории.
К сожалению, нет.