Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import com.sun.org.apache.xpath.internal.functions.FuncFalse;
- import javax.rmi.ssl.SslRMIClientSocketFactory;
- import java.util.Scanner;
- import static java.lang.Math.abs;
- import java.util.Arrays;
- public class MyProgram {
- public static void main(String[] args) {
- int[] input = {0,0};
- Scanner in = new Scanner(System.in);
- for (int i = 0; i < 2; i++)
- {
- input[i] = in.nextInt();
- }
- int N = input[0];
- int K = input[1];
- int[] nums = new int[N];
- for (int i = 0; i < N; i++)
- {
- nums[i] = in.nextInt();
- }
- Arrays.sort(nums);
- int f_index = 0;
- int l_index = nums.length - 1;
- int result = 1;
- boolean negative = false;
- boolean positive = false;
- double mod1 = Math.pow(10,9);
- long mod
- if (nums[nums.length - 1] < 0)
- {
- negative = true;
- }
- if (nums[nums.length - 1] > 0)
- {
- positive = true;
- }
- if (K%2 != 0 && positive)
- {
- result *= nums[nums.length - 1];
- l_index -= 1;
- K -= 1;
- }
- while (true)
- {
- if (K == 0)
- {
- System.out.println(result);
- break;
- }
- else if (K == 1)
- {
- result *= nums[l_index];
- result %= mod;
- K -= 1;
- }
- else
- {
- int minimal = nums[f_index] * nums[f_index + 1];
- int maximal = nums[l_index] * nums[l_index - 1];
- if (minimal > maximal && !negative)
- {
- result *= minimal;
- l_index += 2;
- K -= 2;
- }
- else if (minimal < maximal && negative)
- {
- result *= minimal;
- l_index += 2;
- K -= 2;
- }
- else
- {
- result *= maximal;
- l_index -= 2;
- K -= 2;
- }
- result %= mod;
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement