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 }

좋은 웹페이지 즐겨찾기