You are on page 1of 3

CODE: CPP.DSA.Assignment05.

Opt1
Assignment topic: Basic Data Structure and Algorithm FRESHER
– Ad-hoc, Practice-Implementation ACADEMY
Assignment duration: 120 minutes

Problem:CHANGE HORSES
Một tên lính cần cưỡi ngựa cấp tốc chạy về Hoàng Cung, tên lính xuất phát ở điểm 0 và chạy về
điểm s (s≥0).
Tất cả chú ngựa chỉ chạy được đoạn đường là k (km), nếu chạy quá k (km) thì ngựa sẽ mệt và
không thể chạy tiếp được nữa.
Trên đường có n trạm đổi ngựa ở các vị trí là a0, a1, ..., an-1, tên lính này có thẻ thoải mái
đổi ngựa ở các trạm này và ngựa ở các trạm này đều ở trạng thái khỏe mạnh (có thể chạy liên tục
được k (km).)
Vấn đề đặt ra là tên lính không muốn phải thay ngựa quá nhiều lần vì sẽ mất thời gian. Hãy tìm
và in ra số lần thay ngựa ít mà chú lính vẫn có thể cưỡi ngựa về Hoàng Cung, nếu không có cách
nào tên lính về được Hoàng Cung in ra -1.

Ví dụ:

 Với a = [1,3,5], k = 5, s=9 thì changeHorses(a,k,s)=1;


Giải thích:
o Người đó cần cưỡi ngựa từ điểm 0 đến điểm 9.
o Có 3 trạm đổi ngựa ở các vị trí 1, 3, 5.
o Ngựa có thể chạy 5 km liên tiếp.
o Người đó sẽ bỏ qua trạm đổi ngựa a[0]=1 và a[1]=3, vì ngựa của ông ta
vẫn còn có thể chạy được đến trạm đổi ngựa sau đó, đến trạm a[2]=5 thì bắt
buộc ông ta phải đổi ngựa vì ngựa ông ta đã chạy được 5 km nên không thể chạy
thêm được nữa, sau khi đổi ngựa ở trạm a[2]=5, thì ông ta chỉ cách Hoàng
cung 4 km, nên ông ta có thể về hoàng cung. ( Xem thêm hình bên dưới )
 Với a = [1], k=1, s=100 thì changeHorses(a,k,s)=-1;
Giải thích: Tên lính sẽ đổi ngựa ở trạm a[0]=1, nhưng sau khi đổi xong thì ông ta còn
cách Hoàng Cung 99 km, mà ngựa ông ta chỉ chạy được 1 km, nên ông ta sẽ không về
được Hoàng Cung.

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

 [Thời gian] 0.5s với C++


 [Đầu vào] array.integer a
0 < a.size <= 106.
1 ≤ a[i] ≤ 109.
 [Đầu vào] Integer k
0 ≤ k ≤109.
 [Đầu vào] Integer s
1 ≤ s ≤ 109.
 [Đầu ra] integer.
Số lần đổi ngựa ít nhất để đến được Hoàng Cung, nếu như tên lính không thể đến được
Hoàng Cung thì trả về -1.

Yêu cầu viết hàm theo mẫu sau:

int changeHorses(std::vector<int> a, int k, int s)


{
//IMPLEMENT SOLUTION:
}
int main(){
std::vector<int> a = {};
int k = 0;
int s = 0;
std::cout << “Result: ” << changeHorses(a, k, s);

return 0;
}

You might also like