05-04 06:53
Recent Posts
Recent Comments
관리 메뉴

너와나의 관심사

용액 합성하기 본문

카테고리 없음

용액 합성하기

벤치마킹 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;
}


Comments