Search
Duplicate
🍋

용돈 관리

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

Memo

초기값을 설정하는 것이 중요합니다..!
값이 인출해야하는 금액보다 작아버리면 아예 출금을 못하는 경우가 생기기 때문입니다!

Code

제출 날짜

@5/1/2021

메모리

2016 KB

시간

0 ms
#include <iostream> #include <vector> #include <algorithm> int N, M, result, max; std::vector<int> money; void output() { std::cout << result; } void solution() { auto left = *std::max_element(money.begin(), money.end()), right = max; while (left <= right) { auto mid = (left + right) / 2; auto sum = 0, cnt = 1; // std::cout << "mid : " << mid << std::endl; for(auto& i : money) { if(sum + i > mid) { sum = 0; ++cnt; } sum += i; } if (cnt <= M) right = mid - 1; else left = mid + 1; } result = left; } void input() { std::cin >> N >> M; money.resize(N); for(auto& i : money) { std::cin >> i; max += 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++
복사