반응형
http://www.jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=1561&sca=99&sfl=wr_hit&stx=2300
#include <stdio.h>
int N, Liq[100010], ansi, ansj, posbegin, negend;
void Input()
{
int abssum = 9999999999, tmpsum;
bool flag = false;
posbegin = negend = -1;
scanf("%d", &N);
for (int i = 0; i < N; i++)
{
scanf("%d", Liq + i);
if (flag == false && Liq[i] > 0)
{
posbegin = i;//양수 시작하는 인덱스
flag = true;
}
}
if (posbegin > 0)
{//음수가 1개라도 있으면, 음수 end 인덱스를 결정해줌
negend = posbegin - 1;
}
}
#define GetAbsVal(a, b) (a + b >= 0) ? (a + b) : (-(a + b))
void Cal()
{
int abssum = 9999999999, tmpsum;
if (posbegin == -1) ansi = N - 2, ansj = N - 1; //양수가 없는 경우 -> 마지막 2개가 답
else if (negend == -1) ansi = 0, ansj = 1; //음수가 없는 경우 -> 처음 2개가 답
else
{//둘 다 있는 경우 -> 계산
for (int posi = posbegin, negi = negend; posi < N && negi >= 0;)
{
tmpsum = GetAbsVal(Liq[posi], Liq[negi]);
if (abssum > tmpsum) ansi = negi, ansj = posi, abssum = tmpsum;
if (abssum == 0) return;
if (Liq[posi] + Liq[negi] > 0) negi--;
else posi++;
}
}
}
int main(void)
{
Input();
Cal();
printf("%d %d", Liq[ansi], Liq[ansj]);
return 0;
}
반응형
'프로그래밍 알고리즘' 카테고리의 다른 글
[정올 2467] 비용 (1) | 2023.01.08 |
---|---|
[정올 2461] 공주님의 정원 (0) | 2023.01.08 |
[정올 2261] 경로 찾기 (0) | 2023.01.07 |
[정올 2255] 섞기 수열 (0) | 2023.01.07 |
[정올 2247] 도서관 (0) | 2023.01.07 |