如果暴搜的话,大概率会超时。
可以使用优先队列。
##子矩阵
from queue import deque
## 滑动窗口
n,m,a,b=map(int,input().strip().split())
nums=[list(map(int,input().strip().split())) for _ in range(n)]
MOD=998244353
def get_row_max_min(nums,k,flag):
result=[]
## 定义单调队列
dq=deque()
for row in nums:
## 定义单调队列
## 存储下标
dq=deque()
## 暂存该行的最值(a个内)
temp=[]
for index,num in enumerate(row):
## 只维护最值(最值必须在队列第一个位置)
## 单调排列,要添加的元素如果比前面元素大或小,则弹出前方元素
while dq and flag*num>=flag*row[dq[-1]]:
dq.pop()
## 单调队列放下标
dq.append(index)
## 弹出开头元素
if index-dq[0]>=k:
dq.popleft()
## 行遍历超k元素,可以进行添加最值
if index>=k-1:
temp.append(row[dq[0]])
result.append(temp)
return