• Как оптимизировать хеш-функцию для яндекс контеста?

    @Jacon Автор вопроса
    Сам допёр до решения. Дело было в том, что не надо было хешировать color, т.к. с разным цветом круги считаются равными.
    Вот готовое решение:
    #include
    #include
    struct Circle {
    int x, y, r;
    char color;
    Circle(int x, int y, int r, char color) : x(x), y(y), r(r), color(color) {}
    bool operator== (const Circle& another) const{
    return (x == another.x) && (y == another.y) && (r == another.r);
    }
    };
    template <>
    struct std::hash {
    size_t operator()(const Circle& c) const {
    size_t hash = 17;
    hash = hash * 31 + std::hash()(c.x);
    hash = hash * 31 + std::hash()(c.y);
    hash = hash * 31 + std::hash()(c.r);
    return hash;
    }
    };
    Ответ написан