본문 바로가기
IT/BOJ

백준(BOJ) 7453 합이 0인 네 정수 *

by 빨강자몽 2018. 6. 1.

제 친구의 경우 이분탐색으로 구현하지는 않았지만,

저는 이분탐색을 이용하여 구현하였습니다.(equal_range)


#include 
#include 
#include 
#define MAX 4005
#pragma warning(disable:4996)
using namespace std;
typedef long long ll;
ll ans = 0;
int n, d1, d2,map[MAX][4];
vector a, b;
int main()
{
	scanf("%d", &n);
	for (int i = 0; i < n; i++)
		for (int k = 0; k < 4; k++)
			scanf("%d", &map[i][k]);
	for (int i = 0; i < n; i++)
		for (int k = 0; k < n; k++)
		{
			a.push_back(map[i][0] + map[k][1]);
			b.push_back(map[i][2] + map[k][3]);
		}
	sort(a.begin(), a.end());
	sort(b.begin(), b.end());
	for (int i = 0; i < a.size(); i++)
	{
		pair::iterator, vector::iterator> iter2 = equal_range(b.begin(), b.end(), -1 * a[i]); 
		d2 = distance(iter2.first, iter2.second);
		ans += d2;
	}
	printf("%lld", ans);
	return 0;
}


'IT > BOJ' 카테고리의 다른 글

백준(BOJ) 1920 수찾기 *  (0) 2018.06.01
백준(BOJ) 10815 숫자 카드 *  (0) 2018.06.01
백준(BOJ) 1931 회의실배정 **  (0) 2018.06.01
백준(BOJ) 1931 로프 *  (0) 2018.06.01
백준(BOJ) 1946 신입사원 *  (0) 2018.06.01