Codeforces Beta Round #45 D. Permutations

Permutations

xの個数をCxとして、C1≧C2≧C3…が成り立てば良い。順列の個数はC1。答えは-1だけど入力にnより大きい数がくることもあり得る。

n = input()
P = map(int,raw_input().split())
N = max(P)
C = [0]*(N+1)
A = [0]*n
for i in range(n):
    C[P[i]] += 1
    A[i] = C[P[i]]
if all([C[i]>=C[i+1] for i in range(1,N)]):
    print C[1]
    for a in A:
        print a,
    print
else:
    print -1