728x90
#include<iostream>
#include<vector>
#include<algorithm>
#include<math.h>
#include<cmath>
using namespace std;
long long liquid[100001];
int main() {
ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
int n;
cin >> n;
for (int i = 0; i < n; i++) {
cin >> liquid[i];
}
sort(liquid, liquid + n);
int s = 0;
int e = n-1;
long long minnum = abs(liquid[s]+liquid[e]);
long long al = liquid[s];
long long ar = liquid[e];
while (s < e) {
long long sum = liquid[s] + liquid[e];
if (abs(sum) < minnum) {
minnum = abs(liquid[s] + liquid[e]);
al = liquid[s];
ar = liquid[e];
}
if (sum > 0) {
e--;
}
else {
s++;
}
}
cout << al << " " << ar;
return 0;
}
- 두 용액의 값을 더한 결과가 음수일 경우 왼쪽 포인터를 증가 시키고 , 양수일 경우 오른쪽 포인터를 감소시킨다.
'백준 > 투포인터' 카테고리의 다른 글
부분합 - 1806번 (0) | 2021.09.01 |
---|---|
두수의 합 - 3273번(Java) (0) | 2021.09.01 |
겹치는건 싫어 (0) | 2021.04.12 |
구간 합 구하기4 (0) | 2021.04.08 |
배열합치기 (0) | 2021.04.08 |