SAN BẰNG DÃY SỐ

(sanbang.*)

Nguồn: https://www.hackerrank.com

Đề bài:

Cho số nguyên dương \(n,\ k\) và dãy số nguyên dương \(a_{1},a_{2},\ldots,a_{n}\). Jerry muốn san bằng dãy số \(a_{1} + k,a_{2} + k,\ldots,a_{i - 1} + k,a_{n} + k\) bằng cách thực hiện nhiều lần các bước sau:

1. Chọn 2 số khác nhau trong dãy, gọi hai số đó là \(a,b\)

2. Thay giá trị số lớn bằng \(|a - b|\)

Các bước trên được thực hiện cho đến khi tất cả các số trong dãy có giá trị như nhau.

Ví dụ với dãy số 3 12 6 và \(k = 3\) thì Jerry sẽ thực hiện trên dãy số \(3 + 3,\ 12 + 3,\ 6 + 3\) như sau:

\(6,\ 15,\ 9\) \(\rightarrow\) chọn số 6 và 15 \(\rightarrow\) 6, 9, 9 \(\rightarrow\) chọn số 6 và 9 \(\rightarrow\) 6, 3, 9 \(\rightarrow\) chọn số 3 và 9 \(\rightarrow\) 6, 3, 6 \(\rightarrow\) chọn số 6 và 3 \(\rightarrow\) 3, 3, 6 \(\rightarrow\) chọn số 6 và 3 \(\rightarrow\) 3, 3, 3.

Vậy kết quả là 3

Dữ liệu vào:

+ Dòng đầu tiên ghi hai số nguyên dương \(n,\ q\ (1 \leq n,q \leq 10^{5})\) lần lượt cho biết số lượng phần tử dãy số và số lượng truy vấn.

+ Dòng thứ 2 ghi lần lượt các số \(a_{1},a_{2},\ldots,a_{n}\ (1 \leq a_{i} \leq 10^{14})\)

+ \(q\) dòng tiếp theo, mỗi dòng ghi một số nguyên dương \(k\ (0 \leq k \leq 10^{9})\)

Kết quả:

+ Với mỗi truy vấn, in ra giá trị một phần tử của dãy \(a_{1} + k,a_{2} + k,\ldots,a_{i - 1} + k,a_{n} + k\) sau khi thực hiện san bằng. Mỗi truy vấn in kết quả trên một dòng.

Ví dụ:

Input Output
3 2
3 12 6
0
3
3
3

Bạn cần đăng nhập để nộp bài

hpcode.edu.vn
Code tích cực
Trong 24h
  1. trungnam (6/7)
  2. sythai (5/8)
  3. npk1605 (5/10)
Trong 7 ngày
  1. nguyenanhvu (40/64)
  2. khieuquan (35/59)
  3. ngokhang (27/55)
Trong 30 ngày
  1. quechi (85/105)
  2. dangphong3108 (79/125)
  3. kiennhientv (79/179)
Thống kê
AC/Sub: 97887/180710
Pascal: 17121
C++: 130348
Python: 33199
Lượt xem/tải tests: 38905

Lưu Hải Phong - 2020
[email protected]