Submission #590338

#TimeUsernameProblemLanguageResultExecution timeMemory
590338dnialhRope (JOI17_rope)Pypy 3
80 / 100
1422 ms262144 KiB
from collections import Counter import sys as sus input = sus.stdin.readline n, m = map(int, input().split()) c = list(range(1, m + 1)) c = list(map(int, input().split())) ct = Counter(c) ctl = [0] * (m + 1) for i in range(1, m + 1): ctl[i] = ct[i] o = ct.most_common() del ct odd = Counter() eve = Counter() for i in range(n - 1): s = min(c[i], c[i + 1]) b = max(c[i], c[i + 1]) if i % 2: odd[(s << 20) | b] += 1 else: eve[(s << 20) | b] += 1 for v in odd: odd[v] = min(odd[v], eve[v]) del eve out = [] for i in range(1, m + 1): res = 0 for v, vc in o: if v == i: continue bl = odd[(i << 20) | v] + odd[v << 20 | i] #br = eve[(i << 20) | v] + eve[v << 20 | i] bad = bl #print(bl, br) #bad = min(bl, br) res = max(res, vc - bad) if bad == 0: break out.append(n - res - ctl[i]) print('\n'.join(map(str, out)))
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...