알고리즘/BOJ
[백준] 13333 Q-인덱스
세진짱
2018. 5. 14. 03:09
문제 설명이 애매하다..!
풀이는 간단하다
1. 입력받은 인용수를 배열에 넣고 정렬시킨다.
2. 0~10000까지를 다 돌아보며 k를 정해준다
3. k의 lower_bound부터 upper_bound까지가 확인 해 줄 범위다
왜냐하면 k의 lower_bound 부터 upper_bound 이전까지는 k번 이하를 만족한다!
4. 범위를 돌며 k이상 인용한게 k와 같은지 확인한다
소스코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | #include <iostream> #include <algorithm> using namespace std; int n; int arr[1010]; int main() { scanf(" %d", &n); for (int i = 0; i < n; i++) scanf(" %d", &arr[i]); sort(arr, arr + n); for (int i = 0; i <= 10000; i++) { auto a = lower_bound(arr, arr + n, i) - arr; auto b = upper_bound(arr, arr + n, i) - arr; for (int j = a; j <= b; j++) { if (j > n) continue; if (i == n - j) { printf("%d\n", i); return 0; } } } } | cs |