HihoCoder#1133 2점·2점 찾기 k 소수
5523 단어 code
질문
코드:
1 #include <iostream>
2
3 using namespace std;
4
5 int N, K;
6 int *a;
7
8 int search(int left, int right, int k) {
9 if (left > right)
10 return -1;
11 int l = left;
12 int r = right;
13 int p = a[left];
14 while (l < r) {
15 while (l < r && a[r] > p)
16 r--;
17 a[l] = a[r];
18 while (l < r && a[l] < p)
19 l++;
20 a[r] = a[l];
21 }
22 a[l] = p;
23 if ((l - left + 1) == k)
24 return a[l];
25 else if ((l - left + 1) < k)
26 return search(l + 1, right, k - (l - left + 1));
27 else
28 return search(left, l - 1, k);
29 }
30
31 int main() {
32 scanf("%d%d", &N, &K);
33 a = new int[N];
34 for (int i = 0; i < N; i++)
35 scanf("%d", &(a[i]));
36 printf("%d
", search(0, N - 1, K));
37 delete a;
38 return 0;
39 }