문제링크
https://www.acmicpc.net/problem/2805
코드 제출 기록 (메모리 및 시간)
메모리 : 271608 KB
시간 : 548 ms
Code
N, M = map(int, input().split())
tree=list(map(int, input().split()))
tree.sort()
left = 0
right = 0
for i in range(N):
if right < tree[i]:
right = tree[i]
while (left <= right):
mid = (left + right) // 2
cut = 0
for i in range(N):
if (tree[i] >= mid):
cut += tree[i] - mid
if cut >= M:
answer = mid
left = mid + 1
else:
right = mid - 1
print(answer)
Python
복사
메모
1.
tree 배열을 오름차순 정렬한다
2.
mid 와 M을 비교하면서 이분 탐색
while( left <= right )으로 해야 됨!!!!!