-
[Algorithm] C++ 이분검색Programming/Algorithm 2019. 12. 23. 12:18
입력설명
첫 줄에 한 줄에 자연수 N(3<=N<=1,000,000)과 M이 주어집니다. 두 번째 줄에 N개의 수가 공백을 사이에 두고 주어집니다.
출력설명첫 줄에 정렬 후 M의 값의 위치 번호를 출력한다
입력예제
8 32
23 87 65 12 57 32 99 81
출력예제
3
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<algorithm> #include<vector> using namespace std; int main() { int n, i, key, lt = 0, rt, mid, tmp; scanf("%d %d", &n, &key); vector<int> a; for (i = 0; i < n; i++) { scanf("%d", &tmp); a.push_back(tmp); } sort(a.begin(), a.end()); rt = n - 1; while (lt <= rt) { mid = (lt + rt) / 2; if (a[mid] == key) { printf("%d\n", mid + 1); return 0; } else if (a[mid] > key) { rt = mid - 1; } else { lt = mid + 1; } } return 0; }
'Programming > Algorithm' 카테고리의 다른 글
[Algorithm] C++ 봉우리(2차원 배열) (0) 2019.12.26 [Algorithm] C++ 멀티태스킹(카카오 먹방 문제 변형, 시뮬레이션) (0) 2019.12.25 [Algorithm] C++ 공주 구하기(조세퍼스) (0) 2019.12.23 [Algorithm] C++ 마구간 정하기(이분검색) (0) 2019.12.23 [Algorithm] C++ 뮤직비디오(이분검색) (0) 2019.12.23