설명없음

백준 14921: 용액 합성하기 [C/C++]

치킨먹고싶어요 2022. 6. 8. 17:40

https://www.acmicpc.net/problem/14921

 

14921번: 용액 합성하기

홍익대 화학연구소는 다양한 용액을 보유하고 있다.  각 용액은 -100,000,000부터 100,000,000사이의 특성 값을 갖는데, 같은 양의 두 용액을 혼합하면, 그 특성값은 두 용액의 특성값의 합이 된다. 당

www.acmicpc.net

 

#include <iostream>
using namespace std;
static const auto fastio = []() { // 빠른 입출력
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);
    return 0;
};
int main() {
    int n, s[111111], ans = 2100000000, l, r, positive = 1
    cin >> n;
    for (int i = 0; i < n; i++cin >> s[i];
    l = 0; r = n - 1// 투 포인터
    while (l < r) {
        if (abs(s[l] + s[r]) < abs(ans)) { // 절대값을 기준으로
            ans = abs(s[l] + s[r]);
            positive = s[l] + s[r] < 0 ? -1 : 1// 음수 표시를 하기 위하여
        }
        if (s[l] + s[r] < 0) l++// 음수면 왼쪽에서 하나 당겨오고
        else r--// 양수면 오른쪽에서 하나 당겨오고
    }
    cout << ans * positive;
    return 0;
}
cs

 

간단한 투 포인터 문제 입니다.