[문제 링크]
https://www.acmicpc.net/problem/1074
[입출력 예]
[소스코드]
// 14:37 풀이 시작
#include <iostream>
using namespace std;
int arr[2][2]={{0,1},{2,3}};
int func (int n, int r, int c){
if(n==1){
return arr[r][c];
}
// 이전 단계에서 한 변의 길이
int prev = 1<<(n-1);
if ( prev <=r && prev<=c){
return func(n-1, r-prev,c-prev)+ 3*(prev*prev);
}
else if (prev<=r){
return func(n-1,r-prev,c)+2*(prev*prev);
}
else if (prev<=c){
return func(n-1,r,c-prev)+(prev*prev);
}
else{
return func(n-1,r,c);
}
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
int n,r,c;
cin>>n>>r>>c;
cout<<func(n,r,c);
return 0;
}