Xóa phần tử

View as PDF

Time limit: 1.0s , Memory limit: 256M , Points: 100 (partial)

Cho mảng số nguyên a gồm n phần tử được đánh số từ 1 đến n và một số nguyên dương k.

Đầu tiên, tiến hành xóa k phần tử của mảng. Sau đó, gọi f(x) là số lần xuất hiện giá trị x trong mảng sau khi đã xóa đi k phần tử. Gọi F(a) là giá trị f(x) lớn nhất, hay nói cách khác, F(a) là số lần xuất hiện nhiều nhất của một số nguyên.

Bạn hãy tìm cách xóa đi k phần tử sao cho F(a) đạt giá trị nhỏ nhất.

Input

  • Dòng đầu tiên chứa hai số nguyên nk (1 \le n \le 10^6 ; 0 \le k \le n).
  • Dòng thứ hai chứa n số nguyên của mảng a (1 \le a \le 10^9).

Output

  • In ra giá trị nhỏ nhất của F(a).

Examples

Sample Input
6 2
1 3 2 4 2 3
Sample Output
1

Scoring

  • Subtask 1 - 24\% số điểm: n \le 5000 ; k=0 ; a_i \le n
  • Subtask 2 - 28\% số điểm: k=0
  • Subtask 3 - 30\% số điểm: n \le 5000
  • Subtask 4 - 18\% số điểm: Không có ràng buộc gì thêm

Notes

Trong ví dụ, để tối ưu ta có thể xóa a_2=3a_5=2, khi đó mảng trở thành a=[1,2,4,3].


Comments