위 문제는 2023년 12월 USACO 브론즈 1번 문제이다.
각 캔디마다 소들이 순서대로 캔디를 먹는다.
이때 자기 키까지만 먹을 수 있고, 자기 키를 먹으면 캔디는 그 위치에 그대로 떠있다.
예시) 길이가 6인 캔디를 높이가 3인 소가 먹으면 캔디는 4~6 위치에 떠있는 것이다.
한 캔디를 모두 먹은후에 각 소가 먹은 만큼 키가 증가한다.
다음 캔디도 위와 같은 작업을 진행한다.
위와 같은 내용을 단순히 구현하면 되는 문제이다.
주의해야 할 점은 캔디를 다먹으면 이후 소들은 먹을 수 있는게 없으니 break해야한다. 안하면 시간초과남.
3 2 # 소 마리수, 캔디 수
3 2 5 # 각 소의 높이
6 1 # 각 캔디의 높이
7 # 1번 소의 최종 높이
2 # 2번 소의 최종 높이
7 # 3번 소의 최종 높이
cow_num, candy_num = map(int, input().split())
cows = list(map(int, input().split()))
candies = list(map(int, input().split()))
grow = [0]*cow_num
candy_locations = [1]*candy_num
for k in range(candy_num):
for r in range(cow_num):
if cows[r] >= candies[k]: # 사탕 높이 보다 크다면
cows[r] += candies[k] - (candy_locations[k]-1)
break
elif cows[r] >= candy_locations[k]: # 사탕 하단 높이 보다 크다면
grow_before = cows[r]
cows[r] += cows[r] - (candy_locations[k]-1)
candy_locations[k] = grow_before+1
for k in cows:
print(k)