diff options
author | crupest <crupest@outlook.com> | 2021-03-23 19:02:19 +0800 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2021-03-23 19:02:19 +0800 |
commit | 02baf90c3a56e7aa3177206c8ee1a212d05cfaeb (patch) | |
tree | 6edbcd92038f92a4a7507513c44ac42ad95d27c5 | |
parent | a2fd778dfca45cb2a3471647427e6b409f76de80 (diff) | |
download | solutions-02baf90c3a56e7aa3177206c8ee1a212d05cfaeb.tar.gz solutions-02baf90c3a56e7aa3177206c8ee1a212d05cfaeb.tar.bz2 solutions-02baf90c3a56e7aa3177206c8ee1a212d05cfaeb.zip |
Add acwing 1239.
-rw-r--r-- | acwing/1239.cpp | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/acwing/1239.cpp b/acwing/1239.cpp new file mode 100644 index 0000000..c670cd4 --- /dev/null +++ b/acwing/1239.cpp @@ -0,0 +1,52 @@ +#include <algorithm>
+#include <iostream>
+
+int N, K;
+long long A[100010];
+
+long long M = 1000000009;
+
+int main() {
+ std::ios_base::sync_with_stdio(false);
+ std::cin.tie(nullptr);
+
+ std::cin >> N >> K;
+
+ for (int i = 0; i < N; i++) {
+ std::cin >> A[i];
+ }
+
+ std::sort(A, A + N);
+
+ long long result = 1;
+ int left = 0, right = N - 1;
+ long long sign = 1;
+ int k = K;
+
+ if (k % 2) {
+ result = A[N - 1];
+ right--;
+ k--;
+
+ if (result < 0) {
+ sign = -1;
+ }
+ }
+
+ while (k) {
+ long long x = A[left] * A[left + 1], y = A[right] * A[right - 1];
+
+ if (x * sign > y * sign) {
+ result = x % M * result % M;
+ left += 2;
+ } else {
+ result = y % M * result % M;
+ right -= 2;
+ }
+ k -= 2;
+ }
+
+ std::cout << result;
+
+ return 0;
+}
|