37 条题解
-
0
#include <iostream> #include <algorithm> using namespace std; const int MAX_N = 1000000; long long tree[MAX_N]; int main() { int N; long long M; cin >> N >> M; long long max_height = 0; for (int i = 0; i < N; i++) { cin >> tree[i]; if (tree[i] > max_height) { max_height = tree[i]; } } long long left = 0; long long right = max_height; long long result = 0; while (left <= right) { long long mid = (left + right) / 2; long long total = 0; for (int i = 0; i < N; i++) { if (tree[i] > mid) { total += tree[i] - mid; } } if (total >= M) { result = mid; left = mid + 1; } else { right = mid - 1; } } cout << result << endl; return 0; }
信息
- ID
- 1
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 1
- 标签
- 递交数
- 4607
- 已通过
- 1304
- 上传者