SHARE
TWEET

Grapevine TLE

royalsflush Jul 1st, 2012 7 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top