結果に数値が存在するかどうかを知るには、上に数値があるかどうか、下に数値があるかどうかをリストごとに知る必要があります。上と下の両方の数字があるリストは、自分に合った数字を選択できるので問題ありません。問題は、上に数字のみ、または下に数字のみがあるリストです。最初のものは最大で NK でなければならず、2 番目のものは最大で K でなければなりません。これが当てはまらない場合、番号を選択することはできません。これが当てはまる場合は、上と下の両方の番号があるリストでいつでも番号を選択して、番号が選択されるようにすることができます。
これは線形時間でチェックできます。または、リストを最初にソートすると、全体的な複雑さが O(n.log(n)) になります。ここで、n は合計の数値です。並べ替えを行わないと、複雑さが n² になります。
リストを使用した例では:
{2 5 3}, {8 1 6}, {7 4 9}
2-最大の数を探しているとしましょう。番号ごとに、管理者が叫ぶことができるかどうかを尋ねます。それらのそれぞれについて、他のリストに下の数字と上の数字の両方があるかどうかを調べます。それらのいくつかをさらに見てみましょう
5 の場合: 他の両方のリストの上下に数字があります。したがって、「5」は管理者が叫ぶことができます。
「2」の場合: 2 番目のリストの上下に数字があるので、このリストの上または下の数字を自由に選択できます。ただし、3 番目のリストには上記の数字しかないため、このリストで選択された数字は常に大きくなります。2 番目のリストの下の数字を自由に選択できるため、「2」は 2 番目に大きい数字になります。
"1" の場合: 2 番目のリストの上には数字しかないため、"1" は常に最小の要素になります。
"9" の場合: これは逆で、常に最大です。