KuPellaKeS BTS 是一種 BTS 但遵守以下規則:
並將此樹以文字輸出,例:
#include <algorithm>
#include <iostream>
using namespace std;
#define N 1005
int node[N], sum[N];
void dfs(int l, int r) {
if (l > r) {
return;
}
int root = l, min_diff = INT32_MAX, max_left = INT32_MIN;
for (int i = l; i <= r; i++) {
if (i != r && node[i] == node[i + 1]) {
continue;
}
int left = (i - 1 < 0 ? 0 : sum[i - 1]) - (l - 1 < 0 ? 0 : sum[l - 1]);
int right = sum[r] - sum[i];
int diff = abs(right - left);
if (diff < min_diff) {
root = i, min_diff = diff, max_left = left;
}
if (left > max_left && diff == min_diff) {
root = i, max_left = left;
}
}
cout << node[root];
if (l != r) {
cout << "(";
dfs(l, root - 1);
if (root != l && root != r) {
cout << ",";
}
dfs(root + 1, r);
cout << ")";
}
}
int main() {
int t;
cin >> t;
for (int i = 1; i <= t; i++) {
int n;
cin >> n;
for (int i = 0; i < n; i++) {
cin >> node[i];
}
sort(node, node + n);
sum[0] = node[0];
for (int i = 1; i < n; i++) {
sum[i] = sum[i - 1] + node[i];
}
cout << "Case #" << i << ": ";
dfs(0, n - 1);
cout << endl;
}
return 0;
}