Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Multiset
- {
- public:
- int n,aib[1000001];
- Multiset(int n)
- {
- this->n=n;
- for(int i=0;i<=n;++i)
- aib[i]=0;
- }
- void Insert(int x)
- {
- for(int i=x;i<=n;i+=(i&-i))
- ++aib[i];
- }
- int Find(int x)
- {
- int y=0;
- for(int k=(1<<19);k>=1;k/=2)
- if(y+k<n&&aib[y+k]<x)
- x=x-aib[y+k],y+=k;
- return y+1;
- }
- void Erase(int x)
- {
- int y=Find(x);
- for(int i=y;i<=n;i+=(i&-i))
- --aib[i];
- }
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement