atcoder#ABC140F. [ABC140F] Many Slimes

[ABC140F] Many Slimes

题目描述

1 1 匹のスライムがいます。

あなたはこのスライムの「体力」を自由な整数の値に設定できます。

スライムは 1 1 秒ごとに、自分より真に小さい整数の体力をもつスライムを 1 1 匹生成することで増殖していきます。生成されるスライムの体力は、スライムごとに毎回自由に決めることができます。最初の増殖はこれから 1 1 秒後に起こります。

最初のスライム、および生成されるスライムの体力を適切に定めることで、これから N N 秒後に存在する 2N 2^N 匹のスライムの体力の集合を集合 S S に一致させることができるか判定してください。

ここで S S 2N 2^N 要素からなる重複を認める整数の集合で、その要素は S1, S2, ..., S2N S_1,~S_2,~...,~S_{2^N} です。

输入格式

入力は以下の形式で標準入力から与えられる。

N N S1 S_1 S2 S_2 ... ... S2N S_{2^N}

输出格式

最初のスライム、および生成されるスライムの体力を適切に定めることで、N N 秒後に存在する 2N 2^N 匹のスライムの体力の集合を集合 S S に一致させることができるなら Yes を、できないなら No を出力せよ。

题目大意

你有一个史莱姆,你可以给他的健康值设置成任意整数,每个史莱姆每秒必然产生一个健康值严格小于它的史莱姆,这个健康值也由你来指定。 给定大小为2^n的集合S,求是否能够分裂出该集合。

2
4 2 3 1
Yes
2
1 2 3 1
Yes
1
1 1
No
5
4 3 5 3 1 2 7 8 7 4 6 3 7 2 3 6 2 7 3 2 6 7 3 4 6 7 3 4 2 5 2 3
No

提示

制約

  • 入力は全て整数である。
  • 1  N  18 1\ \leq\ N\ \leq\ 18
  • 1  Si  109 1\ \leq\ S_i\ \leq\ 10^9

Sample Explanation 1

2 2 秒後に存在するスライムの体力の集合を S S に一致させる一例を示します。 まず最初のスライムの体力を 4 4 に設定します。 最初のスライムに体力が 3 3 のスライムを生成させることで、1 1 秒後に存在するスライムの体力を 4, 3 4,~3 とできます。 そして最初のスライムに体力が 2 2 の、2 2 匹目のスライムに体力が 1 1 のスライムを生成させることで、2 2 秒後に存在するスライムの体力を 4, 3, 2, 1 4,~3,~2,~1 とできます。これは集合として S S に一致しています。

Sample Explanation 2

S S は同じ整数を複数含むこともあります。