9934๋ฒ: ์์ ์ด์ง ํธ๋ฆฌ
์๊ทผ์ด๋ ์ฌ๋ก๋ฒ ๋์์ ๋์ Donji Andrijevci๋ฅผ ์ฌํํ๊ณ ์๋ค. ์ด ๋์์ ๋๋ก๋ ๊น์ด๊ฐ K์ธ ์์ ์ด์ง ํธ๋ฆฌ๋ฅผ ์ด๋ฃจ๊ณ ์๋ค. ๊น์ด๊ฐ K์ธ ์์ ์ด์ง ํธ๋ฆฌ๋ ์ด 2K-1๊ฐ์ ๋ ธ๋๋ก ์ด๋ฃจ์ด์ ธ ์๋ค. (์๋ ๏ฟฝ๏ฟฝ
www.acmicpc.net
โจ ๋ด ์์ค ์ฝ๋
#include<iostream>
#include <vector>
#include <math.h>
using namespace std;
int tree[10][2048];
int main(void) {
ios::sync_with_stdio(false);
cin.tie(NULL);
int K;
cin >> K;
int level = K;
vector<int> vec;
for (int i = 0; i < pow(2, K) -1; i++) {
int temp;
cin >> temp;
vec.push_back(temp);
}
int j = 0;
int x = 2;
int t = 0;
tree[0][0] = vec[pow(2, K) / 2 - 1];
while (K--) {
for (int i = 0; i < pow(2,K); i++) {
tree[K][j] = vec[i * x + t];
j++;
}
x *= 2;
j = 0;
t = (t + 1) * 2 - 1;
}
cout << tree[0][0] << endl;
for (int i = 1; i <= level; i++) {
for (int j = 0; tree[i][j] != 0; j++) {
cout << tree[i][j] << " ";
}
cout << endl;
}
return 0;
}
๐ ๋ฌธ์ ํ์ด

level 3์ ๊ฒฝ์ฐ๋ง ๋๊ณ ๋ณด๋ฉด, 0 2 4 6 8 10 12 14 ์ ๊ฐ์ด '2์ฉ ์ฆ๊ฐ'ํ๋ค๋ ์ผ์ ํ ๊ท์น์ผ๋ก ์งํ์ด ๋๋ค.
level 2์ ๊ฒฝ์ฐ๋ 1 4 9 13 ์ผ๋ก ์งํ๋๋ฉฐ ๊ฐ์ด '4์ฉ ์ฆ๊ฐ'ํ๋ ๊ฒ์ ํ์ธ ํ ์ ์๋ค
level 1์ ๊ฒฝ์ฐ๋ก 3 11๋ก ๊ฐ์ด '8์ฉ ์ฆ๊ฐ'ํ๋ ๊ฒ์ ๋ณผ ์ ์๋ค
๊ทธ๋ ๋ค๋ฉด level 3์ 2์ฉ ์ฆ๊ฐ, level 2๋ 4์ฉ ์ฆ๊ฐ, level 1์ 8์ฉ ์ฆ๊ฐ์ด๋, ์ฆ๊ฐํ๋ ๊ฐ์๋ 2์ ๊ณฑ์ด๋ผ๋ ๊ท์น์ด ์์์ ์ ์ ์๋ค.
๊ฐ ๋ ๋ฒจ์์ ๊ฐ์ฅ ์ฒ์ ์์ํ๋ ๊ฐ์ธ 0 ,1, 3์ ๊ฒฝ์ฐ๋ ๋ณด๋ฉด
(๋ ๋ฒจ+1)*2-1 ์ด๋ผ๋ ๊ฐ์ด๋ผ๋ ๊ฒ์ ํ์ธ ํ ์ ์๋ค.
โญ ๋ฌธ์ ํ์ด ๊ฒฐ๊ณผ
