use std::collections::HashMap;
fn f(m: usize) -> Option<[(u32, u32); 5]> {
let mut map = HashMap::<u64, [(u32, u32); 5]>::with_capacity(1 << 24);
for a in 1u64.. {
for b in 1..a {
let c = a * a * a - b * b * b;
let mut finished = false;
if !map.contains_key(&c) {
map.insert(c, [(a as u32, b as u32), (0, 0), (0, 0), (0, 0), (0, 0)]);
} else if let Some(values) = map.get_mut(&c) {
value_append(values, (a as u32, b as u32));
finished = value_valid_size(values) == m;
}
if finished {
}
}
}
return None;
}
fn value_valid_size(a: &[(u32, u32)]) -> usize {
a.iter().position(|&(a, _)| a == 0).unwrap_or(a.len())
}
fn value_append(a: &mut [(u32, u32)], b: (u32, u32)) {
let pos = value_valid_size(a);
if pos < a.len() {a[pos] = b;}
}
fn main() {
println!("{:?}", f(5))
}
dXNlIHN0ZDo6Y29sbGVjdGlvbnM6Okhhc2hNYXA7CmZuIGYobTogdXNpemUpIC0+IE9wdGlvbjxbKHUzMiwgdTMyKTsgNV0+IHsKICAgIGxldCBtdXQgbWFwID0gSGFzaE1hcDo6PHU2NCwgWyh1MzIsIHUzMik7IDVdPjo6d2l0aF9jYXBhY2l0eSgxIDw8IDI0KTsKICAgIGZvciBhIGluIDF1NjQuLiB7CiAgICAgICAgZm9yIGIgaW4gMS4uYSB7CiAgICAgICAgICAgIGxldCBjID0gYSAqIGEgKiBhIC0gYiAqIGIgKiBiOwogICAgICAgICAgICBsZXQgbXV0IGZpbmlzaGVkID0gZmFsc2U7CiAgICAgICAgICAgIGlmICFtYXAuY29udGFpbnNfa2V5KCZjKSB7CiAgICAgICAgICAgICAgICBtYXAuaW5zZXJ0KGMsIFsoYSBhcyB1MzIsIGIgYXMgdTMyKSwgKDAsIDApLCAoMCwgMCksICgwLCAwKSwgKDAsIDApXSk7CiAgICAgICAgICAgIH0gZWxzZSBpZiBsZXQgU29tZSh2YWx1ZXMpID0gbWFwLmdldF9tdXQoJmMpIHsKICAgICAgICAgICAgICAgIHZhbHVlX2FwcGVuZCh2YWx1ZXMsIChhIGFzIHUzMiwgYiBhcyB1MzIpKTsKICAgICAgICAgICAgICAgIGZpbmlzaGVkID0gdmFsdWVfdmFsaWRfc2l6ZSh2YWx1ZXMpID09IG07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgZmluaXNoZWQgewogICAgICAgICAgICAgICAgcmV0dXJuIG1hcC5yZW1vdmUoJmMpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIE5vbmU7Cn0KZm4gdmFsdWVfdmFsaWRfc2l6ZShhOiAmWyh1MzIsIHUzMildKSAtPiB1c2l6ZSB7CiAgICBhLml0ZXIoKS5wb3NpdGlvbih8JihhLCBfKXwgYSA9PSAwKS51bndyYXBfb3IoYS5sZW4oKSkKfQpmbiB2YWx1ZV9hcHBlbmQoYTogJm11dCBbKHUzMiwgdTMyKV0sIGI6ICh1MzIsIHUzMikpIHsKICAgIGxldCBwb3MgPSB2YWx1ZV92YWxpZF9zaXplKGEpOwogICAgaWYgcG9zIDwgYS5sZW4oKSB7YVtwb3NdID0gYjt9Cn0KZm4gbWFpbigpIHsKICAgIHByaW50bG4hKCJ7Oj99IiwgZig1KSkKfQo=
Some([(1134, 357), (1155, 504), (1246, 805), (2115, 2004), (4746, 4725)])