fork download
  1. def generateResult(N, M, commands):
  2. from collections import deque
  3.  
  4. robots = deque(range(1, N+1))
  5. pos = {i: i-1 for i in range(1, N+1)}
  6.  
  7. for cmd in commands:
  8. parts = cmd.split()
  9. typ, x, y = parts[0], int(parts[1]), int(parts[2])
  10. robots.remove(x)
  11. idx = robots.index(y)
  12. if typ == 'A':
  13. robots.insert(idx, x)
  14. else:
  15. robots.insert(idx+1, x)
  16.  
  17. # Map current order to original positions
  18. final_positions = [robot for robot in robots]
  19. target_indices = [final_positions.index(i+1) for i in range(N)]
  20.  
  21. # Find LIS
  22. import bisect
  23. lis = []
  24. for x in target_indices:
  25. idx = bisect.bisect_left(lis, x)
  26. if idx == len(lis):
  27. lis.append(x)
  28. else:
  29. lis[idx] = x
  30.  
  31. return N - len(lis)
  32.  
  33. def main():
  34. import sys
  35. input = sys.stdin.read
  36. data = input().strip().split('\n')
  37. N, M = map(int, data[0].split())
  38. commands = data[1:]
  39. print(generateResult(N, M, commands))
  40.  
  41. main()
  42.  
Success #stdin #stdout 0.12s 14180KB
stdin
4 2
B 1 3
A 4 2
stdout
2