CF1469F.Power Sockets

省选/NOI-

通过率:0%

时间限制:4.00s

内存限制:256MB

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

// We decided to drop the legend about the power sockets but feel free to come up with your own :^)

Define a chain:

  • a chain of length 11 is a single vertex;
  • a chain of length xx is a chain of length x−1x-1 with a new vertex connected to the end of it with a single edge.

You are given nn chains of lengths l1,l2,…,lnl_1, l_2, \dots, l_n. You plan to build a tree using some of them.

  • Each vertex of the tree is either white or black.
  • The tree initially only has a white root vertex.
  • All chains initially consist only of white vertices.
  • You can take one of the chains and connect any of its vertices to any white vertex of the tree with an edge. The chain becomes part of the tree. Both endpoints of this edge become black.
  • Each chain can be used no more than once.
  • Some chains can be left unused.

The distance between two vertices of the tree is the number of edges on the shortest path between them.

If there is at least kk white vertices in the resulting tree, then the value of the tree is the distance between the root and the kk-th closest white vertex.

What's the minimum value of the tree you can obtain? If there is no way to build a tree with at least kk white vertices, then print -1.

// 我们决定删去关于电源插座的背景故事,但欢迎你自行构思一个 :^)

定义一条“链”如下:

  • 长度为 11 的链是一个单独的顶点;
  • 长度为 xx 的链,是由一条长度为 x−1x-1 的链在其末端添加一个新顶点,并用一条边连接而成。

你被给定 nn 条链,其长度分别为 l1,l2,…,lnl_1, l_2, \dots, l_n。你计划用其中一部分链来构造一棵树。

  • 树中的每个顶点要么是白色,要么是黑色;
  • 树初始时仅包含一个白色的根顶点;
  • 所有链初始时均由白色顶点组成;
  • 你可以选取其中一条链,并将该链的任意一个顶点通过一条边连接到当前树中任意一个白色顶点上;该链由此成为树的一部分;这条边的两个端点均变为黑色;
  • 每条链最多只能使用一次;
  • 部分链可以不使用。

树中两个顶点之间的距离定义为它们之间最短路径上的边数。

若最终得到的树中至少含有 kk 个白色顶点,则该树的“值”定义为:根顶点与第 kk 个最近的白色顶点之间的距离(按距离从小到大排序,第 kk 个即为距离第 kk 小的白色顶点)。

你能获得的树的最小可能值是多少?若无法构造出至少含 kk 个白色顶点的树,则输出 -1。

输入格式

The first line contains two integers nn and kk (1≤n≤2⋅1051 \le n \le 2 \cdot 10^5, 2≤k≤1092 \le k \le 10^9) — the number of chains and the minimum number of white vertices a tree should have to have a value.

The second line contains nn integers l1,l2,…,lnl_1, l_2, \dots, l_n (3≤li≤2⋅1053 \le l_i \le 2 \cdot 10^5) — the lengths of the chains.

第一行包含两个整数 nn 和 kk(1≤n≤2⋅1051 \le n \le 2 \cdot 10^5,2≤k≤1092 \le k \le 10^9)—— 分别表示链的数量以及一棵树要具有价值所需的最少白色顶点数。

第二行包含 nn 个整数 l1,l2,…,lnl_1, l_2, \dots, l_n(3≤li≤2⋅1053 \le l_i \le 2 \cdot 10^5)—— 表示各条链的长度。

输出格式

Print a single integer. If there is no way to build a tree with at least kk white vertices, then print -1. Otherwise, print the minimum value the tree can have.

输出一个整数。如果无法构建一棵至少包含 kk 个白色顶点的树,则输出 −1-1;否则,输出该树可能的最小值。

输入输出样例

  • 输入#1

    1 2
    3

    输出#1

    2
  • 输入#2

    3 3
    4 3 3

    输出#2

    3
  • 输入#3

    3 5
    4 3 4

    输出#3

    4
  • 输入#4

    2 10
    5 7

    输出#4

    -1

说明/提示

You are allowed to not use all the chains, so it's optimal to only use chain of length 44 in the second example.

允许不使用全部链条,因此在第二个例子中,仅使用长度为 44 的链条是最优的。

输入解题思路,AI测评打分。不知道怎么写?

首页