这到底是哪里出了问题!!!!!
#include<bits/stdc++.h>
using namespace std;
const int N=1005;
int a[N][N],row_max[N][N],row_min[N][N],col_max[N][N],col_min[N][N];
int main()
{
int n,m,k;
cin>>n>>m>>k;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
cin>>a[i][j];
for(int i=1;i<=n;i++)
{
deque<pair<int,int>>qmax,qmin;
for(int j=1;j<=m;j++)
{
while(qmax.size()&&qmax.back().second<=a[i][j]) qmax.pop_back();
while(qmax.size()&&qmax.front().first<=j-k) qmax.pop_front();
qmax.push_back({j,a[i][j]});
if(j>=k) row_max[i][j-k+1]=qmax.front().second;
while(qmin.size()&&qmin.back().second>=a[i][j]) qmin.pop_back();
while(qmin.size()&&qmin.front().first<=j-k) qmin.pop_front();
qmin.push_back({j,a[i][j]});
if(j>=k) row_min[i][j-k+1]=qmin.front().second;
}
}
for(int j=1;j<=m-k+1;k++)
{
deque<pair<int,int>>qmax,qmin;
for(int i=1;i<=n;i++)
{
while(qmax.size()&&qmax.back().second<=row_max[i][j]) qmax.pop_back();
while(qmax.size()&&qmax.front().first<=i-k) qmax.pop_front();
qmax.push_back({i,row_max[i][j]});
if(i>=k) col_max[i-k+1][j]=qmax.front().second;
while(qmin.size()&&qmin.back().second>=row_min[i][j]) qmin.pop_back();
while(qmin.size()&&qmin.front().first<=i-k) qmin.pop_front();
qmin.push_back({i,row_min[i][j]});
if(i>=k) col_min[i-k+1][j]=qmin.front().second;
}
}
int ans=1e9;
for(int i=1;i<=n-k+1;i++)
for(int j=1;j<=m-k+1;j++)
ans=min(ans,col_max[i][j]-col_min[i][j]);
cout<<ans;
return 0;
}