https://www.acmicpc.net/problem/2805
2805번: 나무 자르기
첫째 줄에 나무의 수 N과 상근이가 집으로 가져가려고 하는 나무의 길이 M이 주어진다. (1 ≤ N ≤ 1,000,000, 1 ≤ M ≤ 2,000,000,000) 둘째 줄에는 나무의 높이가 주어진다. 나무의 높이의 합은 항상 M보
www.acmicpc.net
1654번 랜선 자르기와 동일한 문제.
https://www.acmicpc.net/problem/1654
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
typedef tuple<int, int, int> tii;
ll N, M;
vector<ll> tree;
int main()
{
ios::sync_with_stdio(0);
cin.tie(0), cout.tie(0);
cin >> N >> M;
for (int i{1}; i <= N; i++)
{
ll len;
cin >> len;
tree.push_back(len);
}
ll l = 0, r = 1000000000;
while (l < r)
{
ll m = (l + r) / 2 + 1;
ll sum = 0;
for (ll len : tree)
{
if (m >= len)
continue;
sum += len - m;
}
if (sum >= M)
l = m;
else
r = m - 1;
}
cout << l << "\n";
}
2179번: 비슷한 단어 - 자료 구조(unordered_map), 정렬 (1) | 2023.05.27 |
---|---|
16441번: 아기돼지와 늑대 - 그래프(DFS) (0) | 2023.05.27 |
18111번: 마인크래프트 - 완전 탐색 (0) | 2023.05.26 |
2108번: 통계학 - 정렬 (0) | 2023.05.26 |
1939번: 통나무 옮기기 - 최단경로(BFS), 구현 (0) | 2023.05.10 |
댓글 영역