Dãy con tốt

Xem PDF

Điểm: 100 (p) Thời gian: 0.25s Bộ nhớ: 512M Input: bàn phím Output: màn hình

Bạn được cho một dãy số nguyên dương \(a = (a_1, a_2, ..., a_N)\) có độ dài \(N\). Mục tiêu của bạn là xóa đi một vài phần tử trong \(a\) để \(a\) trở thành một dãy tốt.

Ở đây, một dãy \(b\) được gọi là dãy tốt nếu điều kiện sau được thỏa mãn:

  • Với mỗi phần tử \(x\) có trong \(b\), giá trị \(x\) xuất hiện đúng \(x\) lần trong \(b\).

Ví dụ, \((3, 3, 3)\), \((4, 2, 4, 1, 4, 2, 4)\)\(()\) (dãy rỗng) là các dãy tốt, trong khi \((3, 3, 3, 3)\)\((2, 4, 1, 4, 2)\) thì không.

Hãy tìm số lượng phần tử tối thiểu cần phải xóa khỏi \(a\) để nó trở thành một dãy tốt.

Ràng buộc

  • \(1 \le N \le 10^5\)
  • \(a_i\) là số nguyên.
  • \(1 \le a_i \le 10^9\)

Input

  • Dòng đầu chứa số \(n\), dòng thứ hai chứa \(n\) số nguyên dương \(A_1, A_2,…, A_n\).

Output

  • In ra số lượng phần tử tối thiểu cần phải xóa.

Example

Test 1

Input
4
3 3 3 3
Output
1
Note

Giải thích: Ta có thể xóa đi một số 3. Khi đó, dãy trở thành \((3, 3, 3)\) là một dãy tốt.

Test 2

Input
5
2 4 1 4 2
Output
2
Note

Giải thích: Ta có thể xóa đi hai số 4. Khi đó, dãy trở thành \((2, 1, 2)\) là một dãy tốt.

Test 3

Input
6
1 2 2 3 3 3
Output
0
Note

Giải thích: Dãy đã cho sẵn là một dãy tốt.

Test 4

Input
1
1000000000
Output
1
Note

Giải thích: Xóa đi một số \(10^9\). Khi đó, dãy trở thành \(()\) (dãy rỗng) là một dãy tốt.


Bình luận

Không có bình luận nào.