모든 개미가 가장 빨리 떨어지려면 막대를 절반 부분을 기준으로 왼쪽 오른쪽으로 각각 떨어지면 된다. 그 중 가장 안쪽에 있는 개미가 떨어지게 되는 시간이다.
모든 개미가 가장 느리게 떨어지려면 절반을 기준으로 오른쪽에있는 개미가 왼쪽으로 가서 떨어지거나 왼쪽에 있는 개미가 오른쪽으로 가서 떨어지거나 둘중 하나이다. 그 중 가장 큰 값이 가장 느리게 떨어지는 시간이다.
import java.io.*;
import java.util.Arrays;
import java.util.Collections;
import java.util.StringTokenizer;
import java.util.Vector;
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));
int T;
T= Integer.parseInt(br.readLine());
for(int i=0;i<T;i++)
{
StringTokenizer st = new StringTokenizer(br.readLine());
int l = Integer.parseInt(st.nextToken());
int n = Integer.parseInt(st.nextToken());
int[] arr = new int[n];
for(int j=0;j<n;j++) {
arr[j] = Integer.parseInt(br.readLine());
}
Arrays.sort(arr);
int t1=-987654321,t2=-987654321;
for(int j=0;j<n;j++)
{
if(arr[j] < l/2)
{
t1=Math.max(t1,arr[j]);
}
else
{
t1 =Math.max(t1,l-arr[j]);
}
if(arr[j] < l/2)
{
t2=Math.max(t2,l-arr[j]);
}
else
{
t2 =Math.max(t2,arr[j]);
}
}
bw.write(Integer.toString(t1)+" "+Integer.toString(t2)+"\n");
bw.flush();
}
}
}