#STK0000084. Phần tử lớn hơn tiếp theo II (Next Greater Element II)

Phần tử lớn hơn tiếp theo II (Next Greater Element II)

Phần tử lớn hơn tiếp theo II (Next Greater Element II)

Nguồn: LeetCode

Phiên bản: Phước Hưng OJ Extended

Đề bài

Cho một mảng được xem là vòng tròn: sau phần tử cuối lại quay về phần tử đầu. Với mỗi vị trí, hãy tìm giá trị lớn hơn đầu tiên gặp được khi đi sang phải theo vòng tròn. Không được dùng chính phần tử đó làm đáp án. Nếu không tồn tại, in −1-1.

Input

Dòng đầu chứa nn. Dòng thứ hai chứa nn số nguyên của mảng.

Output

In nn số nguyên là phần tử lớn hơn tiếp theo theo vòng tròn của từng vị trí, hoặc −1-1.

Subtask

  • Subtask 1 (30 điểm): n≤200n\le200; các điều kiện khác giữ nguyên.
  • Subtask 2 (70 điểm): 1≤n≤1041\le n\le10^4, −109≤numsi≤109-10^9\le nums_i\le10^9.

Ví dụ

Input

3
1 2 1

Output

2 -1 2

Giải thích

Mảng vòng tròn là [1,2,1][1,2,1].

  • Với phần tử 11 ở vị trí 11, đi sang phải gặp ngay 2>12>1, nên đáp án là 22.
  • Với phần tử 22 ở vị trí 22, đi qua phần tử 11 ở vị trí 33, sau đó vòng về vị trí 11 có giá trị 11; không giá trị nào lớn hơn 22, nên đáp án là −1-1.
  • Với phần tử 11 ở vị trí 33, sau khi vòng về đầu mảng ta gặp 11 ở vị trí 11 bằng nó nên chưa đủ; tiếp theo gặp 2>12>1 ở vị trí 22, nên đáp án là 22.

Do đó output là 2 -1 2.