Treap_test.cpp 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #include "Treap.cpp"
  4. int main() {
  5. int values[] = {6,5,4,1,2,3}, n = sizeof(values)/sizeof(int);
  6. Node *r = NULL;
  7. for(int i = 0; i < n; i++)
  8. merge(r, r, new Node(values[i]));
  9. assert(query(r, 1, 6) == 21);
  10. assert(query(r, 1, 3) == 15);
  11. assert(query(r, 3, 4) == 5);
  12. reverse(r, 1, 3); // 4 5 6 1 2 3
  13. assert(query(r, 1, 3) == 15);
  14. assert(query(r, 3, 4) == 7);
  15. reverse(r, 1, 6); // 3 2 1 6 5 4
  16. assert(query(r, 1, 6) == 21);
  17. assert(query(r, 5, 6) == 9);
  18. insert(r, 2, 8); // 3 8 2 1 6 5 4
  19. assert(query(r, 2, 2) == 8);
  20. assert(query(r, 1, 3) == 13);
  21. insert(r, 3, 2); // 3 8 2 2 1 6 5 4
  22. assert(query(r, 1, 4) == 15);
  23. del(r, 3); // 3 8 2 1 6 5 4
  24. assert(query(r, 2, 2) == 8);
  25. assert(query(r, 1, 3) == 13);
  26. del(r, 1); // 8 2 1 6 5 4
  27. assert(query(r, 2, 5) == 14);
  28. del(r, 2);
  29. del(r, 3);
  30. del(r, 2);
  31. del(r, 2);
  32. del(r, 1);
  33. del(r, 1); //
  34. assert(query(r, 1, 5) == 0);
  35. r = NULL;
  36. insert(r, 1, 10); // 10
  37. insert(r, 1, 2); // 2 10
  38. assert(query(r, 1, 1) == 2);
  39. assert(query(r, 1, 2) == 12);
  40. del(r, 2);
  41. del(r, 1); //
  42. r = NULL;
  43. insert(r, 1, 3); // 3
  44. assert(query(r, 1, 1) == 3);
  45. insert(r, 2, 2); // 3 2
  46. assert(query(r, 1, 2) == 5);
  47. assert(query(r, 2, 2) == 2);
  48. return 0;
  49. }