poj 2019 Cornfields

来源:互联网 发布:win10软件注册表 编辑:程序博客网 时间:2024/05/02 15:48

题目分析:给一个n*n的矩阵,给出坐标(x,y),求以(x,y)为左上角的b*b的子矩阵中最大值与最小值的差值,

暴力过的,据说要用RMQ


#include<iostream>#include<cstdio>#include<cstring>using namespace std;int matrix[300][300];int main(){int n,b,k;while(scanf("%d %d %d",&n,&b,&k)!=EOF){for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)scanf("%d",&matrix[i][j]);for(int i=1;i<=k;i++){int x,y,max=0,min=250;scanf("%d %d",&x,&y);for(int j=x;j<=x+b-1;j++)for(int t=y;t<=y+b-1;t++){     if(matrix[j][t]<min)min=matrix[j][t];     if(matrix[j][t]>max)max=matrix[j][t];}printf("%d\n",max-min);}}//system("pause");return 0;}