Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <algorithm>
- using namespace std;
- int n,m;
- int map[510][510];
- int q,l,u;
- int square(int i, int j) {
- if (map[i][j]<l || map[i][j]>u)
- return 0;
- int beg=0, end=min(n-i,m-j)-1;
- while (beg<end) {
- int mid=(beg+end+1)/2;
- if (map[i+mid][j+mid]<=u) beg=mid;
- else end=mid-1;
- }
- return beg+1;
- }
- int main() {
- while (1) {
- scanf("%d %d", &n,&m);
- if (!n && !m)
- break;
- for (int i=0; i<n; i++)
- for (int j=0; j<m; j++)
- scanf("%d", &map[i][j]);
- scanf("%d", &q);
- while (q--) {
- scanf("%d %d", &l,&u);
- int big=0;
- for (int i=0; i<n; i++)
- for (int j=0; j<m; j++)
- big=max(big,square(i,j));
- printf("%d\n", big);
- }
- printf("-\n");
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement