Dãy con tốt
Xem PDFBạ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)\) và \(()\) (dãy rỗng) là các dãy tốt, trong khi \((3, 3, 3, 3)\) và \((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