#include <unordered_map>
#include <vector>
#include <bitset>
#include <string>
#include <utility>
struct IntTriple
{
int a, b, c;
IntTriple(int a = 0, int b = 0, int c = 0)
: a(a), b(b), c(c)
{ }
bool operator==(IntTriple const& oth) const
{
return this->a == oth.a && this->b == oth.b && this->c == oth.c;
}
};
struct IntTripleHash {
std::size_t operator()(const IntTriple& k) const
{
return k.a + k.b + k.c;
//return k.a + 100*k.b + 10000*k.c
// hier bessere Funktionen bauen
}
};
int main()
{
std::unordered_map<IntTriple, std::string, IntTripleHash> l1;
l1[IntTriple(1, 2, 3)] = "abc";
l1[IntTriple(1, 2, 5)] = "cbde";
}
I2luY2x1ZGUgPHVub3JkZXJlZF9tYXA+CiNpbmNsdWRlIDx2ZWN0b3I+CiNpbmNsdWRlIDxiaXRzZXQ+CiNpbmNsdWRlIDxzdHJpbmc+CiNpbmNsdWRlIDx1dGlsaXR5PgogCiAKIHN0cnVjdCBJbnRUcmlwbGUKIHsKCWludCBhLCBiLCBjOwoJCglJbnRUcmlwbGUoaW50IGEgPSAwLCBpbnQgYiA9IDAsIGludCBjID0gMCkKCQk6IGEoYSksIGIoYiksIGMoYykKCXsgfQoJCglib29sIG9wZXJhdG9yPT0oSW50VHJpcGxlIGNvbnN0JiBvdGgpIGNvbnN0Cgl7CgkJcmV0dXJuIHRoaXMtPmEgPT0gb3RoLmEgJiYgdGhpcy0+YiA9PSBvdGguYiAmJiB0aGlzLT5jID09IG90aC5jOwoJfQogfTsKIAogCnN0cnVjdCBJbnRUcmlwbGVIYXNoIHsKCXN0ZDo6c2l6ZV90IG9wZXJhdG9yKCkoY29uc3QgSW50VHJpcGxlJiBrKSBjb25zdAoJewoJCXJldHVybiBrLmEgKyBrLmIgKyBrLmM7CgkJLy9yZXR1cm4gay5hICsgMTAwKmsuYiArIDEwMDAwKmsuYwoJCS8vIGhpZXIgYmVzc2VyZSBGdW5rdGlvbmVuIGJhdWVuCgl9Cn07CiAKaW50IG1haW4oKQp7CiAgICBzdGQ6OnVub3JkZXJlZF9tYXA8SW50VHJpcGxlLCBzdGQ6OnN0cmluZywgSW50VHJpcGxlSGFzaD4gbDE7CgkKCWwxW0ludFRyaXBsZSgxLCAyLCAzKV0gPSAiYWJjIjsKCWwxW0ludFRyaXBsZSgxLCAyLCA1KV0gPSAiY2JkZSI7Cn0=