# ã¯ã©ã¹ Multiset
æ¬æ©è½ã¯ AtCoderLibrary ã§ã¯ãªã C++æ¨æºã©ã¤ãã©ãª `std::multiset` ã®ç§»æ¤ã§ã.
å¤ééåã表ãã¯ã©ã¹ã§ã.
* 宿°åã®è¦ç´ ã®è¿½å
* ç¹å®ã®è¦ç´ ã®åæ°
ã $O(\log N)$ ã®æéã§æ±ãããã¨ãã§ãããã¼ã¿æ§é ã§ã.
## ã³ã³ã¹ãã©ã¯ã¿
### Multiset
```java
public Multiset()
```
空ã®å¤ééåãä½ãã¾ã. è¨ç®é $O(1)$
```java
public MultiSet(List list)
```
`list`ã®åè¦ç´ ãæã£ãå¤ééåãä½ãã¾ã. è¨ç®é $O(`list.size()`)$
## ã¡ã½ãã
### add
```java
public void add(T elm, long amount)
```
å¤ééåã«è¦ç´ `elm`ã`amount`åå ãã¾ã. è¨ç®é O(log N)
### addOne
```java
public void addOne(T elm)
```
å¤ééåã«è¦ç´ `elm`ã1åå ãã¾ã. è¨ç®é O(log N)
### removeOne
```java
public void removeOne(T elm)
```
å¤ééåããè¦ç´ `elm`ã1ååãé¤ãã¾ã. è¨ç®é O(log N)
### removeAll
```java
public void removeAll(T elm)
```
å¤ééåããè¦ç´ `elm`ãå
¨ã¦åãé¤ãã¾ã. è¨ç®é O(log N)
### merge
```java
public static Multiset merge(Multiset a, MMultiset b)
```
`a` 㨠`b`ã®åéåã¨ãªãå¤ééåãæ°ãã«æ§æãã¦è¿ãã¾ã.