すごいシンプルなんですが競技プログラミングで Python を使う時は関数を定義してその中で問題を解こうという話です。
Global 変数はアクセスに時間がかかる
理由はすごいシンプルで関数内の変数は実行時(解釈された時)に固定の配列に格納され、インデックスでアクセスされます。一方で Global 変数は実行時にはインデックスでアクセスされない(実行時に数が固定できないから)ため、ローカル変数と比べてアクセスに時間がかかります。
どのくらい違うの?
問題とコード、もちろん実行環境にもよりますが、AtCoder の問題を解いていた時に、全く同じコードで、
・グローバル変数を定義して解いた時にはTLE
・関数内にローカル変数として解いた時にはAC
というケースがありました(見てみたら400-500msec違うテストケースも)。
というわけで競技プログラミングで Python を使う時は関数内に解法を書く習慣をつけるとよさそうです。
参考