귤나무

월간 향유회 2023. 12. · Arena #15 G번 heeda0528, pjshwa

현재 귤나무에 남은 귤의 수를 MM이라고 하겠습니다.

MMAA의 최솟값보다 작아지기 전까지는 적어도 한 마리의 곰곰이가 귤을 딸 수 있습니다.

따라서 문제를 다음과 같이 표현할 수 있습니다.

첫 과정에서 순회를 마친 후 aa가 결정된 상황을 생각해봅시다.

이제 MM에서 aa를 빼고 다시 aa를 구해야 하는데, 사실 MMaa보다 작아지기 전까지는 aa의 값이 변하지 않습니다.

MMaa 이상이라면 기존에 더해진 AiA_i는 항상 더해지고, MM은 계속 감소하기 때문에 새로운 AiA_i가 더해질 일이 없기 때문입니다.

따라서 MMaa만큼 감소시키는 대신, MMM mod aM \space mod \space a를 할당해도 됩니다.

MM 이하의 수 aaMM을 나눈 값의 나머지는 항상 floor(M/2)floor(M / 2) 이하이기 때문에, 위 시행은 최대 logMlog M번만 이루어집니다.

따라서 전체 시간복잡도 cal(O)(NlogM)cal(O)(N log M) 에 문제를 풀 수 있습니다.