#include<stdio.h>

int count = 0;

int find_max(int arr[], int n)
{
 int a, b;
 count++;
 if (n == 1)
  return *arr;
 else if (n % 2 == 1){
  a = find_max(arr, (n + 1) / 2);
  b = find_max(arr + (n + 1) / 2, (n - 1) / 2);
 }
 else if (n % 2 == 0){
  a = find_max(arr, n / 2);
  b = find_max(arr + n / 2, n / 2);
 }

 return (a >= b) ? a : b;
}

int main(void){
 int n, i;
 int *num;

 int max = 0, maxindex = 0;
 int max2 = 0;

 scanf("%d", &n);
 num = (int*)malloc(sizeof(int)*n);
 for (i = 0; i < n; i++){
  scanf("%d", &num[i]);
 }

 findmax(num, n);

 for (i = 0; i < n; i++){
  while (findmax(num,n)>max){
   max = findmax(num, n);
   maxindex = i;
  }
 }
 for (i = 0; i < n; i++){
  while (findmax(num, n) > max2&& i != maxindex)
   max2 = findmax(num, n);
 }
   printf("%d %d", max2, count);

   return 0;
}





find_max 함수를 통해 부분수열의 최댓값 중 큰 값을 반환하여

2등을 찾는겁니다.

순환 호출은 배열 길이를 반으로 쪼개서 하나로 될때까지 ... 쪼개는건데

몇번 분할하는지 count 되어야 함.

순환으로 찾는 과제라 다른방법은 없고 위와 같은 방법으로 끝내야되는데...