이번 문제는 투 포인터 알고리즘을 활용하여 해결하는 문제였다.
투 포인터 알고리즘
#include <iostream>
#include <algorithm>
#include <math.h>
#include <climits>
#define MAX 100001
using namespace std;
int n;
long long arr[MAX];
long long mini=LLONG_MAX;
void Input(){
cin>>n;
for(int i=0; i<n; i++){
cin>>arr[i];
}
}
void Solution(){
sort(arr, arr+n);
int start=0;
int end=n-1;
int ix1, ix2;
while(start<end){
long long sum=arr[start]+arr[end];
if(llabs(sum)<mini){
mini=llabs(sum);
ix1=start;
ix2=end;
}
if(sum<0){
start++;
}
else{
end--;
}
}
cout<<arr[ix1]<<" "<<arr[ix2]<<endl;
}
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
Input();
Solution();
return 0;
}