[Hà Nội - TST - 2024] Bài 6: Dãy số lượn sóng

Xem dạng PDF

Gửi bài giải

Điểm: 10,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 1G
Input: stdin
Output: stdout

Dạng bài
Ngôn ngữ cho phép
C, C++, Java, Output Only, Pascal, PyPy, Python, Scratch, TEXT

Cho dãy số gồm ~N~ phần tử ~a_1, a_2, \dots, a_N~ là một hoán vị của các số nguyên từ ~1~ đến ~N~. Dãy con của một dãy số là dãy số nhận được khi không xoá phần tử nào hoặc xoá nhiều phần tử khỏi dãy số đó. Một dãy số ~b_1, b_2, \dots, b_M~ được gọi là dãy số lượn sóng khi thoả mãn điều kiện sau: Với mọi ~i \ (1\le i\le M-1)~, nếu ~b_i \lt b_{i+1}~ thì ~b_{i+1} \gt b_{i+2}~; hoặc nếu ~b_i \gt b_{i+1}~ thì ~b_{i+1} \lt b_{i+2}~. Dãy số gồm không quá ~2~ phần tử cũng là dãy số lượn sóng.

Ta gọi ~f(x, l, r)~ là số lượng phần tử của dãy con lượn sóng dài nhất của dãy số ~a_l, a_{l+1}, \dots, a_r~ sao cho tất cả các phần tử có giá trị không lớn hơn ~x~.

Đặt ~h(x) = \sum^N_{l=1} \sum^N_{r=l} f(x, l, r)~. Hãy tính các giá trị của ~h(1), h(2), \dots, h(N)~.

INPUT

  • Dòng đầu tiên chứa số nguyên ~N \ (2\le N\le 2\times 10^5)~;
  • Dòng thứ hai chứa ~N~ số nguyên ~a_i \ (1\le i\le n)~ là hoán vị từ ~1~ đến ~N~.

OUTPUT

Ghi trên ~N~ dòng, dòng thứ ~i \ (1\le i\le N)~ ghi một số nguyên là giá trị của ~h(i)~.

SAMPLE INPUT

4
1 3 4 2

SAMPLE OUTPUT

4
8
14
18

~h(1) = 1 + 1 + 1 + 1 + 0 + 0 + 0 + 0 + 0 + 0 = 4~

~h(2) = 1 + 1 + 1 + 2 + 0 + 0 + 1 + 0 + 1 + 1 = 8~

~h(3) = 1 + 2 + 2 + 3 + 1 + 1 + 2 + 0 + 1 + 1 = 14~

~h(4) = 1 + 2 + 2 + 3 + 1 + 2 + 3 + 1 + 2 + 1 = 18~

SUBTASKS

  • Có ~20\%~ số test ứng với ~20\%~ số điểm thoả mãn: ~N\le 15~;
  • ~20\%~ số test khác ứng với ~20\%~ số điểm thoả mãn: ~N \le 100~;
  • ~20\%~ số test khác ứng với ~20\%~ số điểm thoả mãn: ~N \le 500~;
  • ~20\%~ số test khác ứng với ~20\%~ số điểm thoả mãn: ~N\le 5000~;
  • ~20\%~ số test khác ứng với ~20\%~ số điểm không có ràng buộc gì thêm.

Bình luận

Hãy đọc nội quy trước khi bình luận.


Không có bình luận tại thời điểm này.