Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- void Encrypt(std::tree<pair<int, int>, null_type, less<pair<int, int>, rb_tree_tag, tree_order_statistics_node_update>& tree_,
- std::vector<int>& order, int n) {
- int count = -1;
- for (int i = 0; i < n; ++i) {
- int number;
- std::cin >> number;
- int k = tree.order_of_key(make_pair(order[number], number));
- std::cout << k << " ";
- tree.erase(make_pair(order[number], number));
- order[number] = count;
- --count;
- tree.insert(make_pair(order[number], number));
- }
- }
- void Decrypt(std::tree<pair<int, int>, null_type, less<pair<int, int>, rb_tree_tag, tree_order_statistics_node_update>& tree_,
- std::vector<int>& order, int n) {
- int count = -1;
- for (int i = 0; i < n; ++i) {
- int number;
- std::cin >> number;
- auto k = tree.find_by_order(number);
- std::cout << *k.second << " ";
- tree.erase(k);
- order[number] = count;
- --count;
- tree.insert(make_pair(order[number], number));
- }
- }
- int main() {
- std::tree<pair<int, int>, null_type, less<pair<int, int>, rb_tree_tag, tree_order_statistics_node_update> tree_;
- int n;
- int m;
- int type;
- std::cin >> n >> m >> type;
- std::vector<int> order(m);
- for (int i = 0; i < m; ++i) {
- order[i] = i;
- }
- if (type == 1) {
- Encrypt(tree_, order, n);
- }
- if (type == 2) {
- Decrypt(tree_, order, n);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement