Search
Duplicate
🍋

나무 자르기

주차
14
문제번호
2805
언어
C++
티어
실버
유형
이분탐색
nj_Blog
nj_상태
이해도
풀이
풀이 X
사람
이해도 2
13 more properties

Memo

Code

제출 날짜

@4/3/2021

메모리

5924 KB

시간

180 ms
#include <iostream> #include <vector> #include <algorithm> std::vector<int> arr; std::string out; int N, M; long long sum; int result; void output() { std::cout << result; } void solution() { long long left = 0; long long mid; long long right = *std::max_element(arr.begin(), arr.end()); while (left <= right) { sum = 0; mid = (left + right) / 2; for (auto i : arr) if (i > mid) sum += i - mid; if (sum < M) right = mid - 1; else if (sum >= M) left = mid + 1; } result = right; } void input() { std::cin >> N >> M; arr.resize(N); for (auto& i : arr) std::cin >> i; } void preset() { std::ios_base::sync_with_stdio(false); std::cin.tie(NULL); std::cout.tie(NULL); } int main() { preset(); input(); solution(); output(); }
C++
복사