並列二分探索でまとめて解の二分探索を行えばよいです。
シミュレート部分はBITやセグメント木で高速化可能です。
個の質問の代わりに、次の個の判定問題を考えます。
個の判定問題は、実際に日間シミュレートをすれば並列して解くことができます。
そして元の質問は、判定問題の「日目」を二分探索すれば答えが得られます。
従って適切に判定問題を定め、シミュレートを回行えれば本問に正解できます。
シミュレートを愚直に行うと時間計算量がとなりTLEします。
そこで食事回数をインコの番号順ではなく序列順に管理することにすると、食事が序列順での区間加算となるため、BITやセグメント木で高速化ができます。
序列の入れ替えは、入れ替え前後の食事回数の差分を取って更新すればよいです。
シミュレート1回あたりの計算量はとなります。
合計の計算量は時間・空間です。
なお、時間・空間の愚直解との差別化のため、特にPythonでは実行時間制限が厳しく設定されています。
定数倍に注意して実装をしてください。
解答例ではBITを使い、序列入れ替え時の差分を別配列に反映させています。