1、相反数
# -*- coding:utf-8 -*-
# 输入整数n
n = int(input())
# 输入n个非零整数
nums = list(map(int, input().split()))
ans = 0
for i in range(n):
for j in range(i, n):
if nums[i] + nums[j] == 0:
ans += 1
print(ans)
2、窗口
# -*- coding:utf-8 -*-
# N=层数,M=点击次数
N, M = map(int, input().split())
# 输入每个窗口坐标
window = []
for i in range(N):
x1, y1, x2, y2 = list(map(int, input().split()))
window.append([x1, y1, x2, y2, i + 1])
# print(window)
# 输入点击位置坐标
click = []
for j in range(M):
x, y = list(map(int, input().split()))
click.append([x, y])
# 查找点击是否在窗口内
def contain(mx: int, my: int):
for s in range(N):
if window[s][0] <= mx <= window[s][2] and window[s][1] <= my <= window[s][3]:
res.append(s)
for m in range(M):
res = []
contain(click[m][0], click[m][1])
if not res:
print("IGNORED")
else:
ans = max(res)
print(window[ans][-1])
top_window = window.pop(ans)
window.append(top_window)
# 修改思路
# 在查找点击是否在窗口内的函数contain中,你没有清空res列表,导致每次点击后res会累积之前的结果,这会影响最大值的判断。你应该在每次调用contain函数之前,把res清空为一个空列表。
# 在输出最顶层窗口编号后,你没有把这个窗口移到所有窗口的最顶层,而是只打印了它的编号。这会导致下一次点击时层次顺序不变。你应该在输出编号后,把这个窗口从window列表中删除,并重新插入到列表的末尾,表示它被移到了最顶层。
# 你可以使用window[s][-1]来表示窗口的编号,而不是window[s][4],这样更简洁。