728x90
전에 풀었던 1074번...
재채점으로 시간초과가 되었다.
머리 안 쓰고 문제에 나와있는 그대로 재귀로 풀었었는데 시간제한이 0.5초로 변경되면서 시간초과로 결과가 바뀌었다.
그래서 다시 풀었다.
#include <iostream>
#include <cmath>
using namespace std;
int main() {
cin.tie(NULL);
ios::sync_with_stdio(false);
int n, r, c;
cin >> n >> r >> c;
n = pow(2, n);
int index = 0;
while (true) {
if (n == 1) {
break;
}
if (r < n / 2 && c < n / 2) {
}
else if (r < n / 2 && c >= n / 2) {
c -= n / 2;
index += pow(n / 2, 2);
}
else if (r >= n / 2 && c < n / 2) {
r -= n / 2;
index += pow(n / 2, 2) * 2;
}
else {
r -= n / 2;
c -= n / 2;
index += pow(n / 2, 2) * 3;
}
n /= 2;
}
cout << index;
return 0;
}
728x90
'알고리즘 문제' 카테고리의 다른 글
[백준] 10974번 모든 순열 (0) | 2021.01.05 |
---|---|
[백준] 1992번 쿼드트리 (0) | 2021.01.05 |
[백준] 1004번 어린 왕자 (0) | 2021.01.03 |
[백준] 11866번 요세푸스 문제 0 (0) | 2021.01.03 |
[백준] 2217번 로프 (0) | 2021.01.02 |