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}\) và \(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\) và \(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ụ:
|
Output | Input | Output | |
---|---|---|---|---|
6 10 21 8 5 8 10 6 |
3 | 5 2020 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}\) và \(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}\) và \(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}\) và \(k \leq 10^{6}\).
Code tích cực |
---|
Trong 24h |
|
Trong 7 ngày |
|
Trong 30 ngày |
|
Thống kê |
---|
AC/Sub: 97887/180710 Pascal: 17121 C++: 130348 Python: 33199 Lượt xem/tải tests: 38905 |