Advertisement
Guest User

Untitled

a guest
Mar 29th, 2020
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.50 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3.  
  4. void Encrypt(std::tree<pair<int, int>, null_type, less<pair<int, int>, rb_tree_tag, tree_order_statistics_node_update>& tree_,
  5. std::vector<int>& order, int n) {
  6. int count = -1;
  7. for (int i = 0; i < n; ++i) {
  8. int number;
  9. std::cin >> number;
  10. int k = tree.order_of_key(make_pair(order[number], number));
  11. std::cout << k << " ";
  12. tree.erase(make_pair(order[number], number));
  13. order[number] = count;
  14. --count;
  15. tree.insert(make_pair(order[number], number));
  16. }
  17. }
  18.  
  19. void Decrypt(std::tree<pair<int, int>, null_type, less<pair<int, int>, rb_tree_tag, tree_order_statistics_node_update>& tree_,
  20. std::vector<int>& order, int n) {
  21. int count = -1;
  22. for (int i = 0; i < n; ++i) {
  23. int number;
  24. std::cin >> number;
  25. auto k = tree.find_by_order(number);
  26. std::cout << *k.second << " ";
  27. tree.erase(k);
  28. order[number] = count;
  29. --count;
  30. tree.insert(make_pair(order[number], number));
  31. }
  32. }
  33.  
  34. int main() {
  35. std::tree<pair<int, int>, null_type, less<pair<int, int>, rb_tree_tag, tree_order_statistics_node_update> tree_;
  36. int n;
  37. int m;
  38. int type;
  39. std::cin >> n >> m >> type;
  40. std::vector<int> order(m);
  41. for (int i = 0; i < m; ++i) {
  42. order[i] = i;
  43. }
  44. if (type == 1) {
  45. Encrypt(tree_, order, n);
  46. }
  47. if (type == 2) {
  48. Decrypt(tree_, order, n);
  49. }
  50. return 0;
  51. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement