코테 준비/완전탐색
18111. 마인크래프트 (브루투포스) -다시 풀어보기
imsmile2000
2022. 12. 9. 23:40
import sys
n,m,b=map(int,sys.stdin.readline().split()) #b:인벤토리에 있는 개수
craft=[list(map(int,sys.stdin.readline().split())) for _ in range(n)]
ans=sys.maxsize
height=0
for g in range(257): #땅의 높이는 256 이하
plus=0 # 놓는 블록의 수
minus=0 # 인벤토리에 넣는 블록의 수
for i in range(n):
for j in range(m):
if craft[i][j]>=g:
minus+=craft[i][j]-g
else:
plus+=g-craft[i][j]
if plus<=minus+b: #꺼내는 블록의 수가 (인벤토리+인벤토리에 넣는 블록의 수)보다 작을 때
time=plus+(minus*2)
if time<=ans:
ans=time
height=g
print(ans,height)
python3로는 시간초과 때문에 도저히 풀리지 않아서 pypy3로 제출.
나중에 python3로 다시 풀어보기