Tìm trung vị luồng dữ liệu

Xem dạng PDF

Gửi bài giải

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

Nguồn bài:
HungTV
Dạng bài
Ngôn ngữ cho phép
C, C++, Go, Java, Kotlin, Pascal, PyPy, Python, Rust, Scratch

Bạn nhận được một luồng dữ liệu gồm các số nguyên được truyền đến liên tục. Sau khi nhận được mỗi số mới, bạn hãy tính và in ra số trung vị (Median) của tất cả các số đã nhận được tính đến thời điểm hiện tại.

Nhắc lại về Số trung vị:

  • Nếu số lượng phần tử của tập hợp là số lẻ, trung vị là phần tử đứng chính giữa khi tập hợp được sắp xếp tăng dần.
  • Nếu số lượng phần tử là số chẵn, trung vị là trung bình cộng của 2 phần tử đứng chính giữa.

Dữ liệu

  • Dòng đầu tiên chứa số nguyên dương ~N~ (~1 \le N \le 10^5~) là tổng số lượng các số sẽ được truyền đến.
  • ~N~ dòng tiếp theo, mỗi dòng chứa một số nguyên ~X~ (~-10^9 \le X \le 10^9~).

Kết quả

In ra ~N~ dòng, dòng thứ ~i~ là số trung vị của tập hợp sau khi nhận được ~i~ số đầu tiên. Kết quả in ra dưới dạng số thập phân với đúng 1 chữ số sau dấu phẩy.

Ví dụ

Input
4
5
15
1
3
Output
5.0
10.0
5.0
4.0
Giải thích
  • Nhận 5: Tập hợp [5]. Trung vị = ~5.0~
  • Nhận 15: Tập hợp [5, 15]. Trung vị = ~(5 + 15) / 2 = 10.0~
  • Nhận 1: Tập hợp [1, 5, 15]. Trung vị = ~5.0~
  • Nhận 3: Tập hợp [1, 3, 5, 15]. Trung vị = ~(3 + 5) / 2 = 4.0~

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.