题解 AT4280 【[ABC115C] Christmas Eve】

Zirnc

2020-02-19 12:34:35

Solution

[ChungZH's blog](https://chungzh.cn) · [ChungZH's portfolio](https://chungzh.cc) > 在另一个世界中,今天是平安夜。 > > 高叶先生的花园里种了 $N$ 棵树。 第 $i$ 棵树的高度 $(1 \leq i \leq N)$为 $h_i$ 米。 > > 他决定从这些树中选择 $K$ 棵树,并用电灯装饰它们。 为了使风景更美,装饰树的高度应尽可能彼此靠近。 > > 更具体地说,让最高装饰树的高度为 $h_{max}$ 米,让最低装饰树的高度为 $h_{min}$ 米, > > $h_{max}-h_{min}$ 值越小越好。$h_{max}-h_{min}$ 的最小可能值是多少? 我们可以先把 $h$ 数组从小到大排序。然后每次装饰 $k$ 个相邻的树,计算这 $k$ 个树中最左和最右的树的高度相差多少,然后和 $minn$ 比较一下,记录最小值即可。 ```cpp #include <algorithm> #include <iostream> #include <map> using namespace std; int main() { int N, K; cin >> N >> K; int h[N + 3]; for (int i = 1; i <= N; i++) { cin >> h[i]; } sort(h + 1, h + 1 + N); int minn = 1e9; for (int i = 1; i <= N - K + 1; i++) minn = min(minn, h[i + K - 1] - h[i]); cout << minn << endl; return 0; } ```