Advertisement
Guest User

Untitled

a guest
Mar 31st, 2020
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.56 KB | None | 0 0
  1. void Bag::add(TElem elem) {
  2. if (length == capacity) {
  3. capacity = capacity + 5;
  4. TElem* newb = new TElem[this->capacity];
  5. for (int i = 0; i < this->length; ++i) {
  6. newb[i] = this->b[i];
  7. }
  8. delete[] this->b;
  9. b = newb;
  10. }
  11.  
  12. if (min_num == INT_MAX) {
  13. min_num = elem;
  14. max_num = elem;
  15. b[0] = 1;
  16. length++;
  17. bagsize++;
  18. }
  19. else if (elem > max_num) {
  20. int dif = elem - min_num;
  21. int dif2 = elem - max_num;
  22. max_num = elem;
  23. if (max_num - min_num + 1 >= capacity) {
  24. capacity = dif + 5;
  25. TElem* newb = new TElem[capacity];
  26. for (int i = 0; i < length; ++i) {
  27. newb[i] = b[i];
  28. }
  29. delete[] b;
  30. b = newb;
  31. for (int i = length; i < capacity; ++i)
  32. b[i] = 0;
  33. }
  34. b[dif] = 1;
  35. bagsize++;
  36. length += dif2;
  37. }
  38. else if (elem < min_num) {
  39. int dif = min_num - elem;
  40. min_num = elem;
  41. if (max_num - min_num + 1 >= capacity) {
  42. capacity = max_num - min_num + 5;
  43. TElem* newb = new TElem[capacity];
  44. for (int i = 0; i < length; ++i) {
  45. newb[i] = b[i];
  46. }
  47. delete[] b;
  48. b = newb;
  49. for (int i = length; i < capacity; ++i)
  50. b[i] = 0;
  51. }
  52. for (int i = 0; i < dif; ++i) {
  53. length++;
  54. for (int j = length; j > 0; j--)
  55. b[j] = b[j - 1];
  56. }
  57. for (int i = 1; i < dif; ++i)
  58. b[i] = 0;
  59. b[0] = 1;
  60. bagsize++;
  61. }
  62. else {
  63. int dif = elem - min_num;
  64. b[dif]++;
  65. bagsize++;
  66. }
  67. /*
  68. if (bagsize == 500){
  69. cout << "MINIM: " << min_num << " " << "MAXIM: " << max_num << '\n';
  70. for (int i = 0; i < length; ++i)
  71. cout << b[i] << " ";
  72. cout << '\n';
  73. }
  74. */
  75.  
  76. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement