#include <algorithm>
#include <iterator>
#include <iostream>
#include <iomanip>
#include <utility>
#include <string>
#include <vector>
#include <memory>
#include <limits>
#include <queue>
#include <cmath>
#include <map>
#include <set>
using namespace std;
typedef long long ll;
struct document
{
float rank;
document(float rank):
rank(rank)
{ }
};
using doc_ptr = shared_ptr<document>;
bool operator < (const doc_ptr& x, const doc_ptr& y)
{
return x->rank < y->rank;
}
int main()
{
const doc_ptr x = make_shared<document>(1.);
const doc_ptr y = make_shared<document>(0.);
cout << "ptrs: " << (x.get() < y.get()) << endl;
cout << "values: " << (x->rank< y->rank) << endl;
cout << "operator <: " << (x < y) << endl;
cout << "less: " << less<doc_ptr>()(x, y) << endl;
return 0;
}
I2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPGl0ZXJhdG9yPgojaW5jbHVkZSA8aW9zdHJlYW0+CiNpbmNsdWRlIDxpb21hbmlwPgojaW5jbHVkZSA8dXRpbGl0eT4KI2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPG1lbW9yeT4KI2luY2x1ZGUgPGxpbWl0cz4KI2luY2x1ZGUgPHF1ZXVlPgojaW5jbHVkZSA8Y21hdGg+CiNpbmNsdWRlIDxtYXA+CiNpbmNsdWRlIDxzZXQ+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdHlwZWRlZiBsb25nIGxvbmcgbGw7CgpzdHJ1Y3QgZG9jdW1lbnQKewogICAgZmxvYXQgcmFuazsKICAgIGRvY3VtZW50KGZsb2F0IHJhbmspOgogICAgICAgIHJhbmsocmFuaykKICAgIHsgfQp9OwogCnVzaW5nIGRvY19wdHIgPSBzaGFyZWRfcHRyPGRvY3VtZW50PjsKIApib29sIG9wZXJhdG9yIDwgKGNvbnN0IGRvY19wdHImIHgsIGNvbnN0IGRvY19wdHImIHkpCnsKICAgIHJldHVybiB4LT5yYW5rIDwgeS0+cmFuazsKfQoKaW50IG1haW4oKQp7CiAgICBjb25zdCBkb2NfcHRyIHggPSBtYWtlX3NoYXJlZDxkb2N1bWVudD4oMS4pOwogICAgY29uc3QgZG9jX3B0ciB5ID0gbWFrZV9zaGFyZWQ8ZG9jdW1lbnQ+KDAuKTsKCiAgICBjb3V0IDw8ICJwdHJzOiAiIDw8ICh4LmdldCgpIDwgeS5nZXQoKSkgPDwgZW5kbDsKICAgIGNvdXQgPDwgInZhbHVlczogIiA8PCAoeC0+cmFuazwgeS0+cmFuaykgPDwgZW5kbDsKICAgIGNvdXQgPDwgIm9wZXJhdG9yIDw6ICIgPDwgKHggPCB5KSA8PCBlbmRsOwogICAgY291dCA8PCAibGVzczogIiA8PCBsZXNzPGRvY19wdHI+KCkoeCwgeSkgPDwgZW5kbDsKCiAgICByZXR1cm4gMDsKfQo=