Advertisement
royalsflush

Grapevine TLE

Jul 1st, 2012
42
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.70 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <algorithm>
  3. using namespace std;
  4.  
  5. int n,m;
  6. int map[510][510];
  7. int q,l,u;
  8.  
  9. int square(int i, int j) {
  10.     if (map[i][j]<l || map[i][j]>u)
  11.         return 0;
  12.  
  13.     int beg=0, end=min(n-i,m-j)-1;
  14.  
  15.     while (beg<end) {
  16.         int mid=(beg+end+1)/2;
  17.  
  18.         if (map[i+mid][j+mid]<=u) beg=mid;
  19.         else end=mid-1;
  20.     }
  21.  
  22.     return beg+1;
  23. }
  24.  
  25. int main() {
  26.     while (1) {
  27.         scanf("%d %d", &n,&m);
  28.         if (!n && !m)
  29.             break;
  30.    
  31.         for (int i=0; i<n; i++)
  32.             for (int j=0; j<m; j++)
  33.                 scanf("%d", &map[i][j]);
  34.  
  35.         scanf("%d", &q);
  36.  
  37.         while (q--) {
  38.             scanf("%d %d", &l,&u);
  39.             int big=0;
  40.    
  41.             for (int i=0; i<n; i++)
  42.                 for (int j=0; j<m; j++)
  43.                     big=max(big,square(i,j));
  44.             printf("%d\n", big);
  45.         }
  46.         printf("-\n");
  47.     }
  48.  
  49.     return 0;
  50. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement