Tích lớn nhất (C.P.VNOI 2021 LMH R2)

Xem PDF



Tác giả:
Dạng bài
Ngôn ngữ cho phép
C, C#, C++, Clang, Cobol, D, Groovy, Haskell, JS, Java, Kotlin, Lua, Node JS, OCaml, ObjectiveC, Output, PHP, Pascal, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Swift
Đ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\)\(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

Mới nhất
Tải bình luận...

Không có bình luận nào.