https://www.acmicpc.net/problem/14921
#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 |
간단한 투 포인터 문제 입니다.
'설명없음' 카테고리의 다른 글
백준 14499: 주사위 굴리기 [C언어], 삼성 코딩 테스트 (0) | 2022.06.13 |
---|---|
백준 16236: 아기 상어 [C언어], 삼성 코딩 테스트 (0) | 2022.06.13 |
백준 1484: 다이어트 [C/C++] (0) | 2022.06.08 |
백준 1940: 주몽 [C/C++], 투 포인터 (0) | 2022.06.08 |
백준 20192: 순서 섞기 [C언어] (0) | 2022.06.03 |