#include <iostream>
#include <vector>
#include <stdio.h>
#include <algorithm>
using namespace std;
struct Point{
int x;
int y;
};
struct compare_functor : public binary_function<bool,Point,Point>
{
bool operator ()(const Point &lhs, const Point &rhs) {
return lhs.x<rhs.x ;
}
};
int main() {
vector<Point> points;
for (int i = 0; i<100; i++) {
//ランダムな点を生成
Point pt = { rand() % (i+1), 0 };
points.push_back(pt) ;
push_heap(points.begin(),points.end(),compare_functor()) ;
}
sort_heap(points.begin(),points.end(),compare_functor()) ;
//要素を順に表示
for (int i = 0; i < 100; i++) {
cout << points[i].x << endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8c3RkaW8uaD4KI2luY2x1ZGUgPGFsZ29yaXRobT4KCgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RydWN0IFBvaW50ewoJaW50IHg7CglpbnQgeTsKfTsKCnN0cnVjdCBjb21wYXJlX2Z1bmN0b3IgOiBwdWJsaWMgYmluYXJ5X2Z1bmN0aW9uPGJvb2wsUG9pbnQsUG9pbnQ+CnsKCWJvb2wgb3BlcmF0b3IgKCkoY29uc3QgUG9pbnQgJmxocywgY29uc3QgUG9pbnQgJnJocykgewoJCXJldHVybiBsaHMueDxyaHMueCA7Cgl9Cn07CgppbnQgbWFpbigpIHsKCXZlY3RvcjxQb2ludD4gcG9pbnRzOwoJZm9yIChpbnQgaSA9IDA7IGk8MTAwOyBpKyspIHsKCQkvL+ODqeODs+ODgOODoOOBqueCueOCkueUn+aIkAoJCVBvaW50IHB0ID0geyByYW5kKCkgJSAoaSsxKSwgMCB9OwoJCXBvaW50cy5wdXNoX2JhY2socHQpIDsKCQlwdXNoX2hlYXAocG9pbnRzLmJlZ2luKCkscG9pbnRzLmVuZCgpLGNvbXBhcmVfZnVuY3RvcigpKSA7Cgl9Cglzb3J0X2hlYXAocG9pbnRzLmJlZ2luKCkscG9pbnRzLmVuZCgpLGNvbXBhcmVfZnVuY3RvcigpKSA7CgoJLy/opoHntKDjgpLpoIbjgavooajnpLoKCWZvciAoaW50IGkgPSAwOyBpIDwgMTAwOyBpKyspIHsKCQljb3V0IDw8IHBvaW50c1tpXS54IDw8IGVuZGw7Cgl9CgoJcmV0dXJuIDA7Cgp9