import sys
from collections import Counter
n = int(sys.stdin.readline())
a = list(map(int, sys.stdin.readline().split()))
d = Counter()
for v in a:
d[v] += 1
ll = sorted(d.values(), reverse=True)
# print(ll)
s = 0
e = len(ll)-1
r = 0
while s <= e:
if ll[s] <= 0:
break
if ll[s] == 1:
r += e-s+1
break
m = ll[s] - 1
while m > 0 and e > s:
if ll[e] <= m:
m -= ll[e]
e -= 1
else:
ll[e] = ll[e] - m
break
s += 1
r += 1
print(r)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | import sys from collections import Counter n = int(sys.stdin.readline()) a = list(map(int, sys.stdin.readline().split())) d = Counter() for v in a: d[v] += 1 ll = sorted(d.values(), reverse=True) # print(ll) s = 0 e = len(ll)-1 r = 0 while s <= e: if ll[s] <= 0: break if ll[s] == 1: r += e-s+1 break m = ll[s] - 1 while m > 0 and e > s: if ll[e] <= m: m -= ll[e] e -= 1 else: ll[e] = ll[e] - m break s += 1 r += 1 print(r) |
English