Loading Now

calculateStoneMoving

Bạn được cung cấp N hòn đá. Mỗi hòn đá đặt tại một tọa độ nguyên XiCác hòn đá có thể có tọa độ bằng nhau.

Bạn có thể thực hiện một trong hai thao tác di chuyển với số lần không giới hạn (hoặc có thể không di chuyển) trên mỗi hòn đá:

  • Thao tác 1: Di chuyển hòn đá sang trái hoặc sang phải 2 đơn vị với chi phí bằng 0. (Nghĩa là di chuyển hòn đá ở toạ độ hiện tại sang X-2 hoặc X+2)
  • Thao tác 2: Di chuyển hòn đá sang trái hoặc sang phải 1 đơn vị với chi phí bằng 1. (Nghĩa là di chuyển hòn đá ở tọa độ hiện tại sang X-1 hoặc X+1)

Lưu ý: Hòn đá được phép di chuyển sang bất kì tọa độ nguyên nào (có thể bằng 0, hoặc âm).

Nhiệm vụ của bạn là tìm tổng số chi phí tối thiểu cần thiết để di chuyển tất cả các hòn đá về cùng một tọa độ 

Ví dụ: 

  • Cho arr=[1,2,3], đầu ra calculateStoneMoving(arr) = 1
    Dời mọi tọa độ về X=3, khi đó hòn đá ở vị trí X=1 dời về X=3 (dùng thao tác 1) sẽ không bị tốn chi phí, vị trí X=2 dời về X=3 (dùng thao tác 2) sẽ tốn chi phí là 1 đơn vị.
  • Cho arr=[2,2,2,3,3], đầu ra calculateStoneMoving(arr) = 2
    Dời mọi hòn đá về tọa độ X=2, khi đó 2 hòn đá ở vị trí X=3 dời về X=2 (dùng thao tác 2) sẽ bị tốn chi phí bằng 2*1=2

Đầu vào / Đầu ra:

  • [Giới hạn thời gian thực hiện] 0.5 giây (C++)
  • [Đầu vào] array.integer arr
    1 ≤ arr.length ≤ 100
    1 ≤ arr[i] ≤ 10
  • [Đầu ra] integer
    Tổng số chi phí tối thiểu cần thiết để di chuyển tất cả hòn đá về cùng một tọa độ.

Post Comment

Contact