Tích lớn nhất (C.P.VNOI 2021 LMH R2)
Xem PDF
Điểm:
300
Thời gian:
1.0s
Bộ nhớ:
512M
Input:
product.inp
Output:
product.out
Cho dãy \(A\) gồm \(n\) số nguyên \(a_1, a_2, \dots, a_n\) và một số nguyên dương \(k \le n\).
Yêu cầu: Hãy chọn ra trong dãy này đúng \(k\) phần tử sao cho tích của \(k\) phần tử này lớn nhất.
Input
- Dòng đầu tiên chứa số nguyên dương \(T\) (\(1 \le T \le 10\)) — số lượng bộ dữ liệu (test case).
- Tiếp theo là \(T\) bộ dữ liệu, mỗi bộ gồm hai dòng:
- Dòng thứ nhất chứa hai số nguyên dương \(n\) và \(k\) (\(1 \le k \le n \le 10^5\)).
- Dòng thứ hai chứa \(n\) số nguyên \(a_1, a_2, \dots, a_n\) (\(|a_i| \le 10^9\)).
- Tổng \(n\) trong tất cả các test case không vượt quá \(2 \cdot 10^5\).
Output
- Với mỗi test case, in ra trên một dòng phần dư của tích lớn nhất khi chia cho \(123456789\).
Example
Test 1
Input
3
5 3
1 2 3 4 5
6 4
-1 -1 -1 -1 0 9
5 3
-1 -1 -1 2 3
Output
60
1
3
Note
- Test 1: Chọn \(3, 4, 5\) được tích lớn nhất là \(3 \cdot 4 \cdot 5 = 60\). Ta có \(60 \pmod{123456789} = 60\).
- Test 2: Chọn bốn số \(-1, -1, -1, -1\) được tích lớn nhất là \((-1)^4 = 1\). Ta có \(1 \pmod{123456789} = 1\).
- Test 3: Chọn \(-1, -1, 3\) được tích lớn nhất là \((-1) \cdot (-1) \cdot 3 = 3\). Ta có \(3 \pmod{123456789} = 3\).
Bình luận