카테고리 없음
용액 합성하기
벤치마킹
2018. 8. 15. 09:34
https://www.acmicpc.net/problem/14921
입력중에 두개 더했을때 0에 가장 가까운 두 합을 출력하는..(출력은 절대 값아님)
l 과 r에서 각각 더해 가면서 0에 가까운 출력을 찾는걸로 답을 구함
예제 입력 1
5 -101 -3 -1 5 93
예제 출력 1
2
#include <stdio.h> #include <iostream> #include <vector> #include <string> #include <queue> #include <functional> #include <algorithm> #include <iostream> #include <vector> #include <cstring> using namespace std; #define MIN(a,b) (((a)<(b))?(a):(b)) #define MAX(a,b) (((a)>(b))?(a):(b)) #define ABS(a) a<0 ?-(a):a // 절대 값 int N; int input[100001]; int ans = 100000000; int solve(int l, int r){ if (l >= r) return -1; int tmp = abs(input[l] + input[r]); if (abs(input[l] + input[r]) < abs(ans) ) ans = input[l] + input[r]; if (tmp >= abs(input[l] + input[r - 1])){ solve(l, r - 1); } else { solve(l +1 , r); } } int main(void) { int max = 0; int TC = 1; freopen("input12.txt", "r", stdin); setbuf(stdout, NULL); cin >> TC; while (TC--){ ans = 100000000; cin >> N; for (int i = 0; i < N; i++) cin >> input[i]; solve(0, N - 1); cout << ans << endl; } return 0; }