#include <set>
#include <iostream>
namespace test {
struct test {
int A;
int B;
};
bool operator< (test const& lhs, test const& rhs) {
return lhs.A < rhs.A;
}
struct test_B { double B; };
bool operator< (test const& lhs, test_B const& rhs) {
return lhs.B < rhs.B;
}
bool operator< (test_B const& lhs, test const& rhs) {
return lhs.B < rhs.B;
}
}
int main() {
std::set<test::test, std::less<void>> example {
{1, 2}, {2, 3}, {3, 4}, {4, 5}, {5, 6}
};
std::cout << example.lower_bound<test::test_B>({3.5})->B;
return 0;
}
I2luY2x1ZGUgPHNldD4KI2luY2x1ZGUgPGlvc3RyZWFtPgoKbmFtZXNwYWNlIHRlc3QgewoJc3RydWN0IHRlc3QgewoJCWludCBBOwoJCWludCBCOwoJfTsKCQoJYm9vbCBvcGVyYXRvcjwgKHRlc3QgY29uc3QmIGxocywgdGVzdCBjb25zdCYgcmhzKSB7CgkJcmV0dXJuIGxocy5BIDwgcmhzLkE7Cgl9CgkKCXN0cnVjdCB0ZXN0X0IgeyBkb3VibGUgQjsgfTsKCQoJYm9vbCBvcGVyYXRvcjwgKHRlc3QgY29uc3QmIGxocywgdGVzdF9CIGNvbnN0JiByaHMpIHsKCQlyZXR1cm4gbGhzLkIgPCByaHMuQjsKCX0KCQoJYm9vbCBvcGVyYXRvcjwgKHRlc3RfQiBjb25zdCYgbGhzLCB0ZXN0IGNvbnN0JiByaHMpIHsKCQlyZXR1cm4gbGhzLkIgPCByaHMuQjsKCX0KfQoKaW50IG1haW4oKSB7CgkKCXN0ZDo6c2V0PHRlc3Q6OnRlc3QsIHN0ZDo6bGVzczx2b2lkPj4gZXhhbXBsZSB7CgkgezEsIDJ9LCB7MiwgM30sIHszLCA0fSwgezQsIDV9LCB7NSwgNn0KCX07CgkKCXN0ZDo6Y291dCA8PCBleGFtcGxlLmxvd2VyX2JvdW5kPHRlc3Q6OnRlc3RfQj4oezMuNX0pLT5COwoJCglyZXR1cm4gMDsKfQ==