Мой код короткий и имеет меньшее количество итераций, чем другие, но все же он получает ошибку превышения лимита времени, в то время как другой код принят на codechef.com.Коды являются решением проблемы «неоднозначной перестановки» на codechef.com. Почему этот код:
def inverse(data,x):
temp=[]
for i in range(x):
temp.append(0)
for i in range(x):
temp[data[i]-1]=i+1
return temp
def main():
while 1:
x=input()
if not x:
return
data=raw_input().split(' ')
for i in range(len(data)):
data[i]=int(data[i])
temp = inverse(data,x)
if temp==data:
print 'ambiguous'
else:
print 'not ambiguous'
if __name__ == "__main__":
main()
быстрее, чем этот код:
while True:
output=[]
n= input()
if n==0: break
caseList= raw_input().split()
amb=1
for i in range(1, n+1):
output.append(str(caseList.index(str(i))+1))
if output==caseList:
print ("ambiguous")
else:
print ("not ambiguous")
Пожалуйста, помогите мне ...