BIẾN ĐỔI MẢNG

Cho một mảng gồm \(n\) số nguyên dương \(ia_{1},\ ia_{2},...,ia_{n}\); số thứ 𝑖 là \(a_{i}\).

Bạn có một phép biến đổi như sau: Chọn hai số bất kỳ \(a_{i}\)\(a_{j}\) (\(i
eq j\)
), nếu \(a_{i} \geq a_{j}\) thì \(a_{j}\) bị loại khỏi mảng và \(a_{i} = a_{i} + 1\).

Ví dụ: mảng gồm 5 phần tử \(\left\{ 21,\ 9,\ 5,\ 8,\ 10 \right\}\), chọn phần tử thứ 1 và thứ 3 sau khi biến đổi thì phần tử thứ 3 bị loại khỏi mảng, mảng mới có 4 phần từ là \(\left\{ 22,\ 9,\ 8,\ 10 \right\}\) .

Yêu cầu: Từ một mảng đã cho, hãy thực hiện các phép biến đổi để thu được nhiều nhất các phần tử lớn hơn hoặc bằng số \(k\) cho trước.

Dữ liệu vào:

+ Dòng 1 gồm 2 số nguyên dương \(n\)\(k\) \((n \leq 10^{6}\), \(k \leq 10^{6})\);

+ Dòng 2 gồm \(n\)­ số nguyên dương \(a_{1},\ ia_{2},...,ia_{n}\) (\(a_{i} \leq 10^{6}\)).

Kết quả:

+ Số phần tử lớn hơn hoặc bằng \(k\) lớn nhất sau khi thực hiện các phép biến đổi.

Ví dụ:

Input

Output Input Output
6 10
21 8 5 8 10 6
3
5 20
20 8 7 8 10
1

Giải thích:

- Test 1: Chọn phần tử thứ 2 và thứ 4, biến đổi thì ta được mảng {𝟐𝟏, 9, 5,𝟏𝟎, 6}; tiếp tục chọn phần tử thứ 2 và thứ 3 ta được mảng {𝟐𝟏, 10, 𝟏𝟎, 6} và số phần tử lớn hoặc bằng 10 là 3.

- Test 2: Thực hiện các phép biến đổi chỉ thu được 1 phần từ lớn hơn hoặc bằng 20.

Ràng buộc:

- Có 40% số test ứng với 40% số điểm của bài có n\(\ \leq 10^{2}\)\(k \leq 10^{2}\);

- Có 30% số test ứng với 30% số điểm của bài có \(10^{2} < n \leq 10^{4}\)\(k \leq 10^{4}\)

- Có 30% số test ứng với 30% số điểm của bài có \(10^{4} < n \leq 10^{6}\)\(k \leq 10^{6}\).

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

hpcode.edu.vn
Code tích cực
Trong 24h
  1. npk1605 (5/10)
  2. hungeazy08 (4/26)
  3. sythai (2/2)
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]