Guest User

Untitled

a guest
Sep 25th, 2015
267
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.21 KB | None | 0 0
  1. #include <cstdio>
  2. #include <algorithm>
  3. #include <vector>
  4.  
  5. using namespace std;
  6.  
  7. #define all(a) (a).begin(),(a).end()
  8. #define pb push_back
  9. #define sz(a) ((int)(a).size())
  10. #define mp make_pair
  11. #define fi first
  12. #define se second
  13.  
  14. typedef pair<int,int> pint;
  15. typedef long long ll;
  16. typedef vector<int> vi;
  17.  
  18.  
  19. #define MAX_N 1005
  20.  
  21. int n,w,a[MAX_N][MAX_N];
  22. ll sum[2][MAX_N][MAX_N];
  23.  
  24. ll query(int i, int j, int s)
  25. {
  26.     ll ans=sum[0][i+s-1][j+s-1]-sum[0][i-1][j-1];
  27.     ans+=sum[1][i+s-1][j]-sum[1][i-1][j+s];
  28.     if (s&1)
  29.         ans-=a[i+s/2][j+s/2];
  30.     return ans;
  31. }
  32.  
  33. int main()
  34. {
  35.     int tc;
  36.     scanf("%d",&tc);
  37.     while (tc--)
  38.     {
  39.         scanf("%d %d",&n,&w);
  40.         for (int i=1; i<=n; i++)
  41.             for (int j=1; j<=n; j++)
  42.             {
  43.                 scanf("%d",&a[i][j]);
  44.                 sum[0][i][j]=a[i][j]+sum[0][i-1][j-1];
  45.                 sum[1][i][j]=a[i][j]+sum[1][i-1][j+1];
  46.             }
  47.         int ans=2;
  48.         for (int i=1; i+ans-1<=n; i++)
  49.             for (int j=1; j+ans-1<=n; j++)
  50.                 if (query(i,j,ans)<=w)
  51.                 {
  52.                     ans++;
  53.                     j--;
  54.                 }
  55.         printf("%d\n",ans-1);
  56.     }
  57.     return 0;
  58. }
Advertisement
Add Comment
Please, Sign In to add comment