CF1165B Polycarp Training

题目描述

Polycarp 想在下一场编程比赛前进行训练。在训练的第 $1$ 天,他需要恰好解决 $1$ 道题目;在第 $2$ 天,他需要恰好解决 $2$ 道题目;在第 $3$ 天,他需要恰好解决 $3$ 道题目;以此类推。在第 $k$ 天,他需要解决 $k$ 道题目。 Polycarp 有 $n$ 场比赛的列表,第 $i$ 场比赛包含 $a_i$ 道题目。在每一天,Polycarp 必须选择一个尚未解决的比赛,并从中解决恰好 $k$ 道题目,其余题目将被舍弃。如果在第 $k$ 天,没有任何一个尚未解决且包含至少 $k$ 道题目的比赛可选,那么 Polycarp 的训练就会停止。 如果 Polycarp 每天都做出最优选择,他最多可以训练多少天?

输入格式

输入的第一行包含一个整数 $n$($1 \le n \le 2 \cdot 10^5$),表示比赛的数量。 第二行包含 $n$ 个整数 $a_1, a_2, \dots, a_n$($1 \le a_i \le 2 \cdot 10^5$),表示第 $i$ 场比赛包含的题目数量。

输出格式

输出一个整数,表示如果 Polycarp 每天都做出最优选择,他最多可以训练多少天。

说明/提示

由 ChatGPT 4.1 翻译