https://www.acmicpc.net/problem/13423
1. 의사코드
1. 2중포문으로 nC2를 함
2. mid값이 존재한다면, 간격이같은 순서쌍이 존재하는것임 -> cnt+1
3. 단, 간격이 홀수이면 mid가 x.5가 되므로 반드시 불가능함 -> continue 처리
4. 시간복잡도 : nC2 (1000*1000/2) * log 1000(이분탐색)
2. 전체코드
#include <bits/stdc++.h>
typedef long long ll;
using namespace std;
int tc, n,dp[100004];
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
cin >> tc;
while (tc--) {
cin >> n;
vector<ll> v;
int cnt=0;
for (int i = 0; i < n; ++i) {
int tmp;
cin >> tmp;
v.push_back(tmp);
}
sort(v.begin(), v.end());
for (int i = 0; i < n-1; ++i) {
for (int j = i+1; j < n; ++j) {
ll dist = v[j] - v[i];
if (dist % 2) continue; //거리가 홀수다 -> mid가 x.5됨 -> 무조건 없음
ll mid = v[i] + dist/2;
//cout << v[i] << " " << mid << " " << v[j] << "\n";
if (binary_search(v.begin(), v.end(), mid)) {
cnt++;
}
}
}
cout << cnt << "\n";
}
return 0;
}
'Algorithm > 이분탐색' 카테고리의 다른 글
백준 14003 LIS 5 c++ // LIS 이분탐색 오류수정, LIS 출력하는법 (0) | 2024.05.15 |
---|---|
백준 12015 LIS c++ // 이분탐색, LIS nlgn풀이 종결?, 한계 (0) | 2024.05.15 |
프로그래머스 연속된부분수열의합 c++ // 정렬된 입력은 이분탐색, 누적합 (0) | 2024.04.16 |
백준 7453 합이0인네정수 c++ // 이분탐색 갯수세기는 ub-lb (0) | 2024.03.30 |
백준 1253 좋다 c++ // 이분탐색 발상, 주의점(자기자신예외처리) (0) | 2024.03.26 |