백준공부/java
[백준] 28245번 배고파(hard) (silver 2
gomduri43
2023. 6. 21. 13:33
import java.io.*;
import java.util.*;
class index{
int x;
int y;
public index(int x, int y){
this.x=x;
this.y=y;
}
}
public class Main{
public static void main(String[] args) throws IOException{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(System.out));
StringBuilder sb=new StringBuilder("");
ArrayList<Long> arr=new ArrayList<>();
ArrayList<Long> sum=new ArrayList<>();
HashMap<Long,index> map=new HashMap<>();
int n=Integer.parseInt(br.readLine());
long temp=0;
for(long i=1; i<=1000000000000000000l; i*=2){
arr.add(i);
}
for(int i=0; i<arr.size(); i++){
for(int j=0; j<arr.size(); j++){
temp=arr.get(i)+arr.get(j);
if(map.get(temp)==null){
sum.add(temp);
map.put(temp,new index(i,j));
}
}
}
Collections.sort(sum);
for(int i=0; i<n; i++){
long find=Long.parseLong(br.readLine());
for(int j=1; j<sum.size(); j++){
if(sum.get(j)>find){
temp= sum.get(j)-find >= find-sum.get(j-1) ? sum.get(j-1) : sum.get(j);
break;
}
}
bw.write(map.get(temp).x+" "+map.get(temp).y+"\n");
}
bw.flush();
}
}