#include<bits/stdc++.h>
using namespace std;
//common file for PBDS
#include<ext/pb_ds/assoc_container.hpp>
//including tree_order_statistics_node_update
#include<ext/pb_ds/tree_policy.hpp>
//namespace
using namespace __gnu_pbds;
//macro definition
#define ordered_set tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update>
int main(){
//ordered set
ordered_set st;
//insert operation
st.insert(5);
st.insert(10);
st.insert(1);
st.insert(3);
//st-> {1, 3, 5, 10}
//find_by_order() return the iterator to the element at xth(0-based) position
cout<<*(st.find_by_order(2));
cout<<endl;
//order_of_key() returns number of elements in set which are strictly less than x
cout<<st.order_of_key(6);
cout<<endl;
st.insert(6);
cout<<st.order_of_key(6);
cout<<endl;
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKLy9jb21tb24gZmlsZSBmb3IgUEJEUwojaW5jbHVkZTxleHQvcGJfZHMvYXNzb2NfY29udGFpbmVyLmhwcD4KLy9pbmNsdWRpbmcgdHJlZV9vcmRlcl9zdGF0aXN0aWNzX25vZGVfdXBkYXRlCiNpbmNsdWRlPGV4dC9wYl9kcy90cmVlX3BvbGljeS5ocHA+Ci8vbmFtZXNwYWNlCnVzaW5nIG5hbWVzcGFjZSBfX2dudV9wYmRzOwoKLy9tYWNybyBkZWZpbml0aW9uCiNkZWZpbmUgb3JkZXJlZF9zZXQgdHJlZTxpbnQsIG51bGxfdHlwZSwgbGVzczxpbnQ+LCByYl90cmVlX3RhZywgdHJlZV9vcmRlcl9zdGF0aXN0aWNzX25vZGVfdXBkYXRlPgppbnQgbWFpbigpewoKICAgIC8vb3JkZXJlZCBzZXQKICAgIG9yZGVyZWRfc2V0IHN0OwogICAgLy9pbnNlcnQgb3BlcmF0aW9uCiAgICBzdC5pbnNlcnQoNSk7CiAgICBzdC5pbnNlcnQoMTApOwogICAgc3QuaW5zZXJ0KDEpOwogICAgc3QuaW5zZXJ0KDMpOwogICAgLy9zdC0+IHsxLCAzLCA1LCAxMH0KCiAgICAvL2ZpbmRfYnlfb3JkZXIoKSByZXR1cm4gdGhlIGl0ZXJhdG9yIHRvIHRoZSBlbGVtZW50IGF0IHh0aCgwLWJhc2VkKSBwb3NpdGlvbgogICAgY291dDw8KihzdC5maW5kX2J5X29yZGVyKDIpKTsKICAgIGNvdXQ8PGVuZGw7CgogICAgLy9vcmRlcl9vZl9rZXkoKSByZXR1cm5zIG51bWJlciBvZiBlbGVtZW50cyBpbiBzZXQgd2hpY2ggYXJlIHN0cmljdGx5IGxlc3MgdGhhbiB4CiAgICBjb3V0PDxzdC5vcmRlcl9vZl9rZXkoNik7CiAgICBjb3V0PDxlbmRsOwogICAgc3QuaW5zZXJ0KDYpOwoKICAgIGNvdXQ8PHN0Lm9yZGVyX29mX2tleSg2KTsKICAgIGNvdXQ8PGVuZGw7CgoKICAgIHJldHVybiAwOwp9Cg==