矩阵排序
受同学启发
用结构体做会更简单
#include <iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<cmath>
using namespace std;
#define maxn 1000010;
struct tttt{
int x;
int y;
int h;
}p[90010];
bool cmp(tttt p1,tttt p2)
{
return p1.h<p2.h;
}
int main()
{
int n;
scanf("%d",&n);
while(n--)
{
int m;
scanf("%d",&m);
int t=0;
for(int i=1;i<=m;i++)
{
for(int j=1;j<=m;j++)
{
int xx;
scanf("%d",&xx);
//int yy=t;
p[t].x=i;
p[t].y=j;
p[t].h=xx;
t++;
}
}
sort(p,p+t,cmp);
int k;
scanf("%d",&k);
int a,b,c,d;
while(k--)
{
scanf("%d%d%d%d",&a,&b,&c,&d);
for(int i=0;i<t;i++)
{
if(p[i].x>=a&&p[i].y>=b&&p[i].x<=c&&p[i].y<=d)
{
printf("%d\n",p[i].h);
break;
}
}
}
}
return 0;
}
还有排序
一开始觉得每次排序都要重新确立数组里的数
其实不用
一开始排好序就好了
再找出存在此范围内的第一个数输出