第二题 t = int(input()) for _ in range(t): n = int(input()) nums = list(map(int, input().split())) def dfs(nums): if len(nums) <= 1: return True root = nums[0] left = [] right = [] for num in nums[1:]: if num > root: right.append(num) else: left.append(num) Abs = abs(get_left([root]+left) - get_right([root]+right)) return dfs(left) and dfs(right) and Abs < ban def get_left(nums): c = 0 tmp = nums[0] for num in nums[1:]: if num<tmp: c += 1 tmp = num return c def get_right(nums): c = 0 tmp = nums[0] for num in nums[1:]: if num>tmp: c += 1 tmp = num return c ban = min(11, n//2) if dfs(nums): print("YES") else: print("NO")
点赞 评论

相关推荐

点赞 评论 收藏
分享
07-24 03:49
门头沟学院 Java
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务