- sol 재귀: 사각형은 2n의 한 변의 길이로 주어진다.
절반씩 파고들고, 한 변의 길이가 2가 되었을 때, 부턴째 2번째로 큰 값을 가져온다.
사각형을 4등분해 가져온 각 값 중, 두번째로 큰 값을 리턴한다.
#include <bits/stdc++.h>
using namespace std;
int N;
vector<vector<int>> board(1025, vector<int>(1025));
int recursion(int x, int y, int n){
vector<int> vec;
if(n == 2){
vector<int> tmp(4);
int v1 = board[x][y];
int v2 = board[x+1][y];
int v3 = board[x][y+1];
int v4 = board[x+1][y+1];
tmp[0] = v1, tmp[1] = v2, tmp[2] = v3, tmp[3] = v4;
sort(tmp.begin(), tmp.end());
return tmp[2];
}
vec.push_back(recursion(x, y, n / 2));
vec.push_back(recursion(x + n / 2, y, n / 2));
vec.push_back(recursion(x, y + n / 2, n / 2));
vec.push_back(recursion(x + n / 2, y + n / 2, n / 2));
sort(vec.begin(), vec.end());
return vec[2];
}
int main(){
cin >> N;
for(int i = 0; i < N; ++i){
for(int j = 0; j < N; ++j){
cin >> board[i][j];
}
}
cout << recursion(0, 0, N);
return 0;
}