fork download
  1. import random
  2.  
  3. def ordered(l, idx):
  4. return 1 if (l[idx]>=l[idx-1]) else 0
  5.  
  6. n = 6
  7. l = [-1]
  8. summ = 1
  9. for i in range(n):
  10. l.append(random.randint(1,100)) #симулируем ввод чисел
  11. summ += ordered(l, -1)
  12. l.append(1000000001)
  13. print(l, summ)
  14.  
  15. while True:
  16. if summ == n+1:
  17. print(l, summ)
  18. break
  19. x = random.randint(1,n) #симулируем ввод индексов для обмена
  20. y = random.randint(1,n)
  21. while y == x:
  22. y = random.randint(1,n)
  23.  
  24. if abs(x - y) == 1:
  25. lastsum = ordered(l,min(x,y)) + ordered(l,max(x,y)) + ordered(l,max(x,y)+1)
  26. else:
  27. lastsum = ordered(l,x) + ordered(l,x+1) + ordered(l,y) + ordered(l,y+1)
  28. l[x], l[y] = l[y], l[x]
  29. if abs(x - y) == 1:
  30. newsum = ordered(l,min(x,y)) + ordered(l,max(x,y)) + ordered(l,max(x,y)+1)
  31. else:
  32. newsum = ordered(l,x) + ordered(l,x+1) + ordered(l,y) + ordered(l,y+1)
  33. summ += newsum - lastsum
Success #stdin #stdout 0.01s 9804KB
stdin
Standard input is empty
stdout
([-1, 75, 66, 39, 70, 37, 31, 1000000001], 3)
([-1, 31, 37, 39, 66, 70, 75, 1000000001], 7)