Loading Now

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ước 1

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ước 27 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

    Contact