結果
| 問題 |
No.566 だいたい完全二分木
|
| コンテスト | |
| ユーザー |
teketeke5000
|
| 提出日時 | 2017-10-19 13:46:12 |
| 言語 | C++11(廃止可能性あり) (gcc 13.3.0) |
| 結果 |
AC
|
| 実行時間 | 2 ms / 2,000 ms |
| コード長 | 816 bytes |
| コンパイル時間 | 1,522 ms |
| コンパイル使用メモリ | 161,872 KB |
| 実行使用メモリ | 6,820 KB |
| 最終ジャッジ日時 | 2024-11-21 07:34:30 |
| 合計ジャッジ時間 | 2,394 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 11 |
ソースコード
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define REP(i,a,n) for(ll i=(a); i<(ll)(n); i++)
#define FOR(it,c) for(__typeof((c).begin()) it=(c).begin(); it!=(c).end(); ++it)
#define ALLOF(v) (v).begin(), (v).end()
int main(void) {
int K,root,tmp,node=0,range,add;
vector<int> ans;
cin >> K;
range = pow(2, K);
node = range/2;
add = range;
tmp = node;
while(true) {
ans.push_back(node);
if (node == range - 1) break;
if (node + add >= range) {
tmp /= 2;
add /= 2;
node = tmp;
}
else node += add;
}
for (int i=0; i<ans.size(); i++) {
ans[i]--;
if (ans[i] == 0) cout << range-1 << " ";
else cout << ans[i] << " ";
}
cout << endl;
return 0;
}
teketeke5000