#CSPJ09C. 蛋糕(cake)

蛋糕(cake)

题目描述

LucyLucy 过生日了,他买了 mm 块蛋糕,第 ii 块蛋糕的大小为 aia_i

LucyLucy 喜欢 22 这个数,所以他买的所有蛋糕的大小一定是 22 的整数幂,即 1im,k01\le i\le m, k\ge 0ai=2ka_i=2^k

LucyLucy 可以用一把刀切蛋糕(切的蛋糕大小必须大于 11),他可以将一块大小为 xx 的蛋糕一分为二切成两块大小为 x2\frac{x}{2} 的蛋糕。

LucyLucy 想要选出一些蛋糕送给朋友,但 LucyLucy 有强迫症,他想让选出蛋糕的大小之和为 nn

由于切蛋糕是需要体力的, LucyLucy 想要知道最少需要切多少次蛋糕使得他能够选出一些蛋糕使得选出蛋糕的大小之和为 nn

如果怎样切蛋糕都无法选出一些蛋糕使得选出蛋糕的大小之和为 nn,请告诉 LucyLucy 不可能(即输出 -1)。

输入格式

cake.in 文件中读入数据

第一行输入两个数字 n,mn,m,分别表示选出蛋糕的大小之和,最初蛋糕的块数。

第二行输入 mm 个整数,第 ii 个整数表示第 ii 块蛋糕的大小 aia_i

输出格式

将数据输出到 cake.out 文件中

共一行,输出一个整数,表示切蛋糕的最小次数,若不可能输出 -1

10 3
1 1 32
2

样例 1 解释

  • 选择大小为 3232 的蛋糕切一刀,变成两块大小为 1616 的蛋糕。
  • 选择大小为 1616 的蛋糕切一刀,变成两块大小为 88 的蛋糕。

可以选出大小分别为 1,1,81,1,8 的蛋糕,使得大小之和为 1010,故最小次数为 22

20 5
1 1 2 8 16
0

其余样例见下发文件

数据规模与约定

  • 对于 20%20\% 的数据,保证 n256n \le 256m4m\le 41ai5121\le a_i\le 512
  • 对于 40%40\% 的数据,保证 n4096n \le 4096
  • 对于另 20%20\% 的数据,保证 m=1m=1
  • 对于另 20%20\% 的数据,保证 m=2m=2
  • 对于 100%100\% 的数据,保证 1n10181\le n\le 10^{18}1m1051\le m\le 10^51ai10131\le a_i\le 10^{13}