https://www.acmicpc.net/problem/1744
package test;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.ArrayDeque;
import java.util.Collections;
import java.util.PriorityQueue;
import java.util.Queue;
public class BaekJoon1744_P203_Q34 {
public static void main(String[] args) throws NumberFormatException, IOException {
// TODO Auto-generated method stub
BufferedReader br =new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw =new BufferedWriter(new OutputStreamWriter(System.out));
long sum=0;
int size = Integer.parseInt(br.readLine());
PriorityQueue<Integer> posQu =new PriorityQueue<>(Collections.reverseOrder());
PriorityQueue<Integer> negQu =new PriorityQueue<>();
Queue<Integer> qu =new ArrayDeque<>();
for(int i=0;i<size;i++) {
int num=Integer.parseInt(br.readLine());
if(num >1) posQu.add(num);
else if(num== 1) qu.add(num);
else negQu.add(num);
}
while(posQu.size()>1) {
int first=posQu.poll();
int sec=posQu.poll();
int mul=first*sec;
qu.add(mul);
}
if(posQu.size()==1) qu.add(posQu.poll());
while(negQu.size()>1) {
int first=negQu.poll();
int sec=negQu.poll();
int mul=first*sec;
qu.add(mul);
}
if(negQu.size()==1) qu.add(negQu.poll());
while(qu.size()>0) {
if(sum>=2147483647) {
sum=2147483647;
break;
}
sum += qu.poll();
}
bw.write(sum+"");
bw.flush();
}
}