Я бы выбрал Python, на нём будет проще писать алгоритмы для олимпиадных задач, чем на C++ и Java. Тем более динамическая типизация(Python), лучше подойдёт чем статическая. Так же, он более лёгок в изучении, нежели Java и тем более C++, который вы за 8 дней на достаточном уровне вряд ли выучите, так что Python будет лучшим выбором.
Python - чит по скорости набора кода и базовым алгоритмам (поиск, сортировка). Можете проиграть по времени на более сложных задачах.
Java - 50/50. Кода больше писать, скорости побольше, чем у питона.
C++ - чит по скорости выполнения. Если обходиться только std::vector, std::map, std::sort, std::pair и не лезть в память, то наиболее оптимальный вариант. Есть мастера, которые используют просто массив вместо всего.
Python. Это, как правило чит - он сильно экономит время при решении любых задач, при его хорошем знании и знании нужного алгоритма, некоторые задачи решатся import решение.
Зато C++ может помочь вам уложиться в требования быстродействия-памяти, если вы даже не знаете оптимального алгоритма.
Java лучший выбор для олимпиад. На втором месте С++, но только в том случае если вы уже его хорошо знаете (намного лучше Java). Слышал такую рекомендацию от Андрея Станкевича, а он кое-чего в этом понимает.
Ринат Велиахмедов: Скорость питона намного ниже. В некоторых олимпиадах делают специальные тесты под него со сниженными ограничениями. Но могут и не сделать. Ну и python бывает вообще не попадает в список поддерживаемых языков.
Библиотеки на олимпиадах обычно доступны только стандартные, так что numpy не прокатит.
В java удобнее работать с отладчиком, на питоне вероятно придется работать в notepad++/sublime.
Плюс многие ошибки отлавливаются компилятором, что тоже бывает полезно.