Dãy số lớn nhỏ
Submit solution
Points:
2 (partial)
Time limit:
1.0s
Memory limit:
98M
Author:
Problem types
Allowed languages
Ada, Assembly, Awk, C, C++, C11, CLANG, CLANGX, Classical, COBOL, Coffee, CSC, D lang, DART, F95, FORTH, Fortrn, GAS32, GO, Haskell, Itercal, Java, kotlin, LEAN, LISP, LUA, MONOVB, Nasm, OCAML, Pascal, Perl, php, PIKE, prolog, Pypy, Python, Ruby 2, RUST, Scala, SCM, SED, SWIFT, TCL, TUR, V8JS, VB, ZIG
Hôm nay, Gon được giao một bài tập về nhà.
Cho một dãy số a gồm \(n\) phần tử \(a_1, a_2,..., a_n\). Với mỗi lần thêm một phần tử, có các thao tác sau được thực hiện:
1. Thêm phần tử vào dãy.
2. Nếu dãy có ít hơn 2 phần tử, quay lại bước 1.
3. Gọi x là giá trị lớn nhất và y là giá trị nhỏ nhất của dãy.
Đồng thời thêm giá trị x + y/2 và y - x/2 vào cuối dãy.
4. Đưa ra tổng chia đôi của giá trị lớn nhất và giá trị nhỏ nhất hiện tại trong dãy.
Hãy giúp Gon in ra kết quả sau mỗi lần thêm một số vào dãy nhé!
Lưu ý: Các phép chia trong thao tác đều là chia lấy nguyên.
Input
- Dòng đầu tiên là số lượng phần tử của dãy \(n\) \((1 \le n \le 10^5)\), tiếp theo đó là các phần tử trong dãy \(a\) \((-10^9 \le a_i \le 10^9)\).
Output
- In ra một dãy số duy nhất là kết quả của bài toán.
Example
Input 1:
5
1 2 3 4 5
Output 1:
1 1 0 0
Input 2:
5
9 1 7 -3 2
Output 2:
3 1 -1 -3
Comments
ai giải thích đề bài e hiểu với đc không ạ
Ban đầu có n giá trị sẽ được nhập vào từ bàn phím
Nhập giá trị đầu tiên vào thì sẽ vào trường hợp 1 : số lượng phần tử trong mảng bé hơn 2 nên tiếp tục nhập
Từ giá trị thứ 2:
Mỗi lần nhập 1 giá trị
vd: nhập giá trị thứ 2 vào thì khi đó mảng có 2 pt sẽ vào trường hợp 2:
Từ mảng đấy tìm ra giá trị max = x và giá trị min = y
Sau đó thêm 2 giá trị x + y/2 và y - x/2
Rồi lại xác định dãy sau đó max = ? và min = ?
In ra màn hình (max+min)//2