#include <iostream>
constexpr int input[] = {-1, 12, 5, 18, 0, -7, -22, 3};
constexpr int size = sizeof(input)/sizeof(input[0]);
struct SortedArray {
int data[size] {};
constexpr SortedArray(const int input[], int size) {
for (int i = 0; i < size; ++i)
data[i] = input[i];
}
};
constexpr SortedArray bubbleSort(const int input[], int size) {
SortedArray output(input,size);
bool s = true;
while (s) {
s = false;
for (int i = 1; i < size; ++i) {
if (output.data[i] < output.data[i-1]) {
int tmp = output.data[i];
output.data[i] = output.data[i-1];
output.data[i-1] = tmp;
s = true;
}
}
}
return output;
}
constexpr SortedArray sorted = bubbleSort(input,size);
static_assert(sorted.data[0] == -22, "runtime");
int main() {
for (int i = 0; i < size; ++i)
std::cout << sorted.data[i] << ' ';
std::cout << std::endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKY29uc3RleHByIGludCBpbnB1dFtdID0gey0xLCAxMiwgNSwgMTgsIDAsIC03LCAtMjIsIDN9Owpjb25zdGV4cHIgaW50IHNpemUgPSBzaXplb2YoaW5wdXQpL3NpemVvZihpbnB1dFswXSk7CgpzdHJ1Y3QgU29ydGVkQXJyYXkgewogICAgaW50IGRhdGFbc2l6ZV0ge307CgogICAgY29uc3RleHByIFNvcnRlZEFycmF5KGNvbnN0IGludCBpbnB1dFtdLCBpbnQgc2l6ZSkgewogICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQogICAgICAgICAgICBkYXRhW2ldID0gaW5wdXRbaV07CiAgICB9Cn07Cgpjb25zdGV4cHIgU29ydGVkQXJyYXkgYnViYmxlU29ydChjb25zdCBpbnQgaW5wdXRbXSwgaW50IHNpemUpIHsKICAgIFNvcnRlZEFycmF5IG91dHB1dChpbnB1dCxzaXplKTsKCiAgICBib29sIHMgPSB0cnVlOwogICAgd2hpbGUgKHMpIHsKICAgICAgICBzID0gZmFsc2U7CiAgICAgICAgZm9yIChpbnQgaSA9IDE7IGkgPCBzaXplOyArK2kpIHsKICAgICAgICAgICAgaWYgKG91dHB1dC5kYXRhW2ldIDwgb3V0cHV0LmRhdGFbaS0xXSkgewogICAgICAgICAgICAgICAgaW50IHRtcCA9IG91dHB1dC5kYXRhW2ldOwogICAgICAgICAgICAgICAgb3V0cHV0LmRhdGFbaV0gPSBvdXRwdXQuZGF0YVtpLTFdOwogICAgICAgICAgICAgICAgb3V0cHV0LmRhdGFbaS0xXSA9IHRtcDsKICAgICAgICAgICAgICAgIHMgPSB0cnVlOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBvdXRwdXQ7Cn0KCmNvbnN0ZXhwciBTb3J0ZWRBcnJheSBzb3J0ZWQgPSBidWJibGVTb3J0KGlucHV0LHNpemUpOwoKc3RhdGljX2Fzc2VydChzb3J0ZWQuZGF0YVswXSA9PSAtMjIsICJydW50aW1lIik7CgppbnQgbWFpbigpIHsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQogICAgICAgIHN0ZDo6Y291dCA8PCBzb3J0ZWQuZGF0YVtpXSA8PCAnICc7CiAgICBzdGQ6OmNvdXQgPDwgc3RkOjplbmRsOwp9