int GetPriorityRecursive(int N, int r, int c)
{
int partsize = 1 << (N + N);
int part = 0;
if (c % partsize < partsize >> 1) part |= 0b01;
if (r % partsize < partsize >> 1) part |= 0b10;
return GetPriorityRecursive(N - 1, r, c) + partsize * part / 4;
}
int GetPriority(int N, int r, int c)
{
int priority = 0;
int partsize, part;
do {
partsize = 1 << (N + N);
part = 0;
if (c % partsize < partsize >> 1) part |= 0b01;
if (r % partsize < partsize >> 1) part |= 0b10;
priority += partsize * part / 4;
} while (--N);
return priority;
}
문제가 별거 아니라 그런지 차이점이 안느껴지네 ㅇㅅㅇ
눈대중이라 정확하진 않음
돌려보셈
귀찮어 ㅇㅅㅇ
재귀 탈출 안시켜줬네 ㅇㅅㅇ
상위 1% Tail optimization