CTDL - set9 - Phần tử trung vị trên set
Trạng thái
Cho một dãy \(N\) số nguyên \(a_1, a_2, ... , a_N\) đôi một khác nhau.
Ta định nghĩa phần tử trung vị của một dãy \(K\) số nguyên như sau: Sắp xếp các phần tử trong dãy \(K\) số nguyên trên theo thứ tự tăng dần. Sau khi sắp xếp xong:
- Nếu \(K\) lẻ, phần tử trung vị của dãy \(K\) số nguyên sẽ là phần tử thứ \((K + 1)/2\)
- Nếu \(K\) chẵn, phần tử trung vị của dãy \(K\) số nguyên sẽ là phần tử thứ \(K/2\).
Yêu cầu
Với mỗi \(i\) \((1 ≤ i ≤ N)\), hãy in ra phần tử trung vị của dãy \(a_1, a_2, ... , a_i.\)
Input:
- Dòng đầu tiên chứa 1 số nguyên dương \(N\) \((1 ≤ N ≤ 10^5).\)
- Dòng tiếp theo chứa \(N\) số nguyên \(a_1, a_2, ... , a_N\) \((|a_i| ≤ 10^9\)).
Output
In ra trên \(N\) dòng, dòng thứ \(i\) là giá trị phần tử trung vị của dãy \(a_1 → a_i\).
Example
| INPUT | OUTPUT |
|---|---|
| \(7\) \(3\) -\(1\) \(4\) \(2\) \(1\) -\(2\) \(6\) |
\(3\) -\(1\) \(3\) \(2\) \(2\) \(1\) \(2\) |
Gợi ý: Sử dụng Set, thêm từng phần tử vào trong Set. Song song với đó, ta duy trì một con trỏ ở trên Set sao cho con trỏ luôn nằm ở phần tử trung vị của dãy.
Thông tin
Thông tin bài tập
Điểm
100
Giới hạn thời gian:
1.0s
Giới hạn bộ nhớ:
977 M
I/O
stdin -> stdout
Tác giả
Loại đề bài
C - Cấu trúc dữ liệu nâng cao: 05 - Set
Ngôn ngữ cho phép