历届真题 修改数组【第十届】【省赛】【研究生组】
#暴力法(能通过3个)
n=int(input())
A=list(map(int,input().split()))
temp=[]
print(A)
for i in range(n):
while (A[i] in temp):
A[i] += 1
print(A[i],end=" ")
temp.append(A[i])
#方法2(能通过4个)
n=int(input())
A=list(map(int,input().split()))
ins=[0 for i in range(1000000)]
for i in range(n):
if ins[A[i]]==0:
ins[A[i]]=1
else:
t=A[i]
while(ins[t]==1):
t+=1
A[i]+=(t-A[i])
ins[t]=1
print(A[i],end=" ")
#并查集
#思路:设置一个数组father[],father[i]表示当访问到i元素时,应该把它换成什么 1 2 3
# 1 1 1
def find(x):
if x!=father[x]:
father[x]=find(father[x])
return father[x]
n=int(input())
A=list(map(int,input().split()))
father=[i for i in range(1000001)]
for i in range(n):
temp=A[i]
A[i]=find(A[i])
father[A[i]]=father[A[i]+1]
father[temp]=father[A[i]]
for i in range(n):
print(A[i],end=" ")