https://www.acmicpc.net/problem/3151
1. 의사코드
1. 이진탐색범위 : j+1부터 탐색한다
2. UpperBbound-LowerBbound가 합이3인사람의 숫자이다. //중복없는
※ 3이 없는경우 ub==lb가 되어 0명이다.
2.전체코드
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll ret;
int n;
vector<ll> v;
set<tuple<int, int, int>> s;
int vis[10004];
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> n;
for(int i=0;i<n;++i){
ll tmp;
cin >> tmp;
v.push_back(tmp);
}
sort(v.begin(), v.end());
//for (auto i : v) cout << i << " ";
//cout << "\n";
for (int i = 0; i < n - 1; ++i) {
for (int j = i + 1; j < n; ++j) {
int cur = v[i] + v[j];
//cout << cur << " ";
int lb = lower_bound(v.begin()+j+1, v.end(), -1 * cur)-v.begin();
int ub = upper_bound(v.begin()+j+1, v.end(), -1 * cur) - v.begin();
ret += ub - lb;
}
}
cout << ret;
return 0;
}
'Algorithm > 이분탐색' 카테고리의 다른 글
백준 14921 용액합성하기 c++ // 이분탐색 정석패턴 (0) | 2024.03.26 |
---|---|
백준 2473 세용액 c++ // 이진탐색 패턴정석 외우기 (0) | 2024.03.25 |
백준 2467 두용액 c++ //이분탐색 정답후보를 탐색하라 (0) | 2024.03.24 |
백준 18869 멀티버스2 c++ // 값을 idx로 바꿔라, 이분탐색이용, unique사용법 (0) | 2024.03.11 |
프로그래머스 순위검색 c++ // 이분탐색, db설정 (0) | 2024.01.11 |