
Sort Deck
Azerious có một bộ bài tây gồm có một số lá bài. Mỗi lá bài có in một số nguyên dương trên đó. Một hôm Azerious quyết đinh sắp xếp lại bộ bài bằng phương pháp sau:
- Bước
1
: Tìm giá trị nhỏ nhất của các lá bài hiện có trong bộ bài - Bước
2
: Lấy lá bài trên cùng của bộ bài - Bước
3
:Nếu lá bài trên cùng của bộ bài có giá trị bằng với giá trị nhỏ nhất của các lá trong bộ bài thì đưa lá bài đó ra khỏi bộ. Ngược lại thì đặt lá bài đó xuống dưới cùng của bộ bài - Bước
4
:Nếu bộ bài vẫn còn ít nhất một lá thì thực hiện lại Bước1
Yêu cầu: Số lần Azerious phải thực hiện Bước 2
để có thể sắp xếp lại bộ bài là bao nhiêu ?
Ví dụ:
- Với
A = [6,3,1,2]
thìsortDeck(A) = 7
Ta có: Lấy con bài giá trị6
trên đầu bộ bài và bỏ nó xuống dưới đáy. Tiếp tục lấy con bài giá trị3
trên đầu bộ bài và bỏ nó xuống dưới đáy. Lấy con bài giá trị1
trên đầu bộ bài và đưa nó ra ngoài. Lấy con bài giá trị2
trên đầu bộ bài đưa nó ra ngoài. Lấy con bài giá trị6
trên đầu bộ bài và đưa nó xuống dưới đáy. Lấy con bài giá trị3
trên đầu bộ bài và đưa nó ra ngoài. Lấy con bài giá trị6
trên đầu bộ bài và đưa nó ra ngoài. Vậy số lần thực hiện Bước2
là7
lần.
Đầu ra/Đầu vào
- [Giới hạn thời gian chạy] 0.5s với C++, 3s với Java/C#, 4s với Python,Js, Go
- [Đầu vào] array.integer A
1 <= A.size() <= 105
1 <= A[i] <= 109
[Đầu ra] long
Kết quả của bài toán
Post Comment