Advertisement
nicuvlad76

Untitled

Dec 11th, 2020
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.56 KB | None | 0 0
  1. class Multiset
  2. {
  3. public:
  4. int n,aib[1000001];
  5. Multiset(int n)
  6. {
  7. this->n=n;
  8. for(int i=0; i<=n; i++)aib[i]=0;
  9. }
  10.  
  11. void Insert(int x)
  12. {
  13. for(int i=x; i<=n; i+=(i&-i))
  14. ++aib[i];
  15. }
  16.  
  17. int Find(int x)
  18. {
  19. int y=0;
  20. for(int k=(1<<19); k>=1; k/=2)
  21. if(y+k<n && aib[y+k]<x)
  22. x=x-aib[y+k],y+=k;
  23. return y+1;
  24. }
  25.  
  26. void Erase(int x)
  27. {
  28. int y=Find(x);
  29. for(int i=y; i<=n; i+=(i&-i))
  30. --aib[i];
  31. }
  32. };
  33.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement