#include <array>
#include <utility>
#include <iostream>
#include <algorithm>
#include <unordered_map>
using type_key = unsigned long long;
using type_value = std::array<std::pair<unsigned int, unsigned int>, 5>;
size_t value_valid_size(type_value &values) {
size_t i, size = values.size();
for (i = 0; i < size && values[i].first; i++);
return i;
}
void value_inspect(type_value &values) {
std::cout << "[";
for (size_t i = 0; i < values.size(); i++) {
if (0 < i) std::cout << ", ";
std::cout << "[" << values[i].first << ", " << values[i].second << "]";
}
std::cout << "]";
}
type_value &value_append(type_value &values, type_value::value_type value) {
size_t cap = values.size(), size = value_valid_size(values);
if (size < cap)
values[size] = value;
else
fprintf(stderr, "values.size(): %u, required: %u\n", cap, cap + 1), exit(EXIT_FAILURE);
return values;
}
type_value &operator<<(type_value &values, type_value::value_type value) {
return value_append(values, value);
}
type_value f(unsigned int m) {
std::unordered_map<type_key, type_value> map(1 << 24);
for (type_key a = 1; ; a++) {
for (type_key b = 1; b < a; b++) {
type_key c = a * a * a - b * b * b;
if (value_valid_size(value_append(map[c], {a, b})) == m) return map[c];
}
}
return {{}};
}
int main() {
type_value v = f(5);
value_inspect(v);
return 0;
}
I2luY2x1ZGUgPGFycmF5PgojaW5jbHVkZSA8dXRpbGl0eT4KI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8dW5vcmRlcmVkX21hcD4KdXNpbmcgdHlwZV9rZXkgPSB1bnNpZ25lZCBsb25nIGxvbmc7CnVzaW5nIHR5cGVfdmFsdWUgPSBzdGQ6OmFycmF5PHN0ZDo6cGFpcjx1bnNpZ25lZCBpbnQsIHVuc2lnbmVkIGludD4sIDU+OwpzaXplX3QgdmFsdWVfdmFsaWRfc2l6ZSh0eXBlX3ZhbHVlICZ2YWx1ZXMpIHsKICAgIHNpemVfdCBpLCBzaXplID0gdmFsdWVzLnNpemUoKTsKICAgIGZvciAoaSA9IDA7IGkgPCBzaXplICYmIHZhbHVlc1tpXS5maXJzdDsgaSsrKTsKICAgIHJldHVybiBpOwp9CnZvaWQgdmFsdWVfaW5zcGVjdCh0eXBlX3ZhbHVlICZ2YWx1ZXMpIHsKICAgIHN0ZDo6Y291dCA8PCAiWyI7CiAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHZhbHVlcy5zaXplKCk7IGkrKykgewogICAgICAgIGlmICgwIDwgaSkgc3RkOjpjb3V0IDw8ICIsICI7CiAgICAgICAgc3RkOjpjb3V0IDw8ICJbIiA8PCB2YWx1ZXNbaV0uZmlyc3QgPDwgIiwgIiA8PCB2YWx1ZXNbaV0uc2Vjb25kIDw8ICJdIjsKICAgIH0KICAgIHN0ZDo6Y291dCA8PCAiXSI7Cn0KdHlwZV92YWx1ZSAmdmFsdWVfYXBwZW5kKHR5cGVfdmFsdWUgJnZhbHVlcywgdHlwZV92YWx1ZTo6dmFsdWVfdHlwZSB2YWx1ZSkgewogICAgc2l6ZV90IGNhcCA9IHZhbHVlcy5zaXplKCksIHNpemUgPSB2YWx1ZV92YWxpZF9zaXplKHZhbHVlcyk7CiAgICBpZiAoc2l6ZSA8IGNhcCkKICAgICAgICB2YWx1ZXNbc2l6ZV0gPSB2YWx1ZTsKICAgIGVsc2UKICAgICAgICBmcHJpbnRmKHN0ZGVyciwgInZhbHVlcy5zaXplKCk6ICV1LCByZXF1aXJlZDogJXVcbiIsIGNhcCwgY2FwICsgMSksIGV4aXQoRVhJVF9GQUlMVVJFKTsKICAgIHJldHVybiB2YWx1ZXM7Cn0KdHlwZV92YWx1ZSAmb3BlcmF0b3I8PCh0eXBlX3ZhbHVlICZ2YWx1ZXMsIHR5cGVfdmFsdWU6OnZhbHVlX3R5cGUgdmFsdWUpIHsKICAgIHJldHVybiB2YWx1ZV9hcHBlbmQodmFsdWVzLCB2YWx1ZSk7Cn0KdHlwZV92YWx1ZSBmKHVuc2lnbmVkIGludCBtKSB7CiAgICBzdGQ6OnVub3JkZXJlZF9tYXA8dHlwZV9rZXksIHR5cGVfdmFsdWU+IG1hcCgxIDw8IDI0KTsKICAgIGZvciAodHlwZV9rZXkgYSA9IDE7IDsgYSsrKSB7CiAgICAgICAgZm9yICh0eXBlX2tleSBiID0gMTsgYiA8IGE7IGIrKykgewogICAgICAgICAgICB0eXBlX2tleSBjID0gYSAqIGEgKiBhIC0gYiAqIGIgKiBiOwogICAgICAgICAgICBpZiAodmFsdWVfdmFsaWRfc2l6ZSh2YWx1ZV9hcHBlbmQobWFwW2NdLCB7YSwgYn0pKSA9PSBtKSByZXR1cm4gbWFwW2NdOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiB7e319Owp9CmludCBtYWluKCkgewogICAgdHlwZV92YWx1ZSB2ID0gZig1KTsKICAgIHZhbHVlX2luc3BlY3Qodik7CiAgICByZXR1cm4gMDsKfQo=
[[1134, 357], [1155, 504], [1246, 805], [2115, 2004], [4746, 4725]]