Advertisement
erfanul007

UVa 10074

Dec 9th, 2021
900
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.76 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. ///for ordered set///
  3. // #include <ext/pb_ds/assoc_container.hpp>
  4. // #include <ext/pb_ds/trie_policy.hpp>
  5.  
  6. using namespace std;
  7. ///For ordered set///
  8. // using namespace __gnu_pbds;
  9. ///For ordered set///
  10. // typedef tree<int,null_type,less<int>,rb_tree_tag,tree_order_statistics_node_update>ordered_set;
  11.  
  12. ///Compiler Optimizer///
  13. // #pragma GCC optimize("Ofast,no-stack-protector")
  14. // #pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
  15. // #pragma GCC optimize("unroll-loops")
  16.  
  17. ///define///
  18. #define ll          long long int
  19. #define all(v)      v.begin(),v.end()
  20. #define rall(v)     v.rbegin(),v.rend()
  21. #define unq(s)      sort(all(s)),(s).erase(unique(all(s)),s.end())
  22. #define pb          push_back
  23. #define pob         pop_back
  24. #define MP          make_pair
  25. #define ff          first
  26. #define ss          second
  27. #define Log(b,x)    (log(x)/log(b))
  28. #define clr(a,x)    memset(a,x,sizeof(a))
  29. #define vout(v,sz)  for(int w=0;w<sz;w++){if(w) spc; cout<<v[w];}
  30. ///IO///
  31. #define sc          scanf
  32. #define pf          printf
  33. #define cspf(i)     pf("Case #%d: ", i)
  34. #define spc         pf(" ")
  35. #define line        pf("\n")
  36. #define sc1(x)      sc("%d", &x)
  37. #define sc2(x,y)    sc("%d %d", &x, &y)
  38. #define scl1(x)     sc("%lld", &x)
  39. #define pf1(x)      pf("%d",x)
  40. #define pfl1(x)     pf("%lld",x)
  41. #define fastIO      ios::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr)
  42. ///constants///
  43. #define MOD         (int)(998244353)
  44. #define MaxN        100000
  45. #define inf         0x3f3f3f3f
  46. #define PI          acos(-1.0)  // 3.1415926535897932
  47. #define eps         1e-6
  48.  
  49. #ifdef ERFANUL007
  50.     #define debug(...) __f(#__VA_ARGS__, __VA_ARGS__)
  51.     template < typename Arg1 >
  52.     void __f(const char* name, Arg1&& arg1){
  53.         cout << name << " = " << arg1 << std::endl;
  54.     }
  55.     template < typename Arg1, typename... Args>
  56.     void __f(const char* names, Arg1&& arg1, Args&&... args){
  57.         const char* comma = strchr(names, ',');
  58.         cout.write(names, comma - names) << " = " << arg1 <<" | ";
  59.         __f(comma+1, args...);
  60.     }
  61. #else
  62.     #define debug(...)
  63. #endif
  64.  
  65. template <class T> inline T bigMod(T p,T e,T M){T ret=1; for(;e>0;e>>=1){ if(e&1) ret=(ret*p)%M; p=(p*p)%M;} return (T)ret;}
  66. template <class T> inline T modInverse(T a,T M){return bigMod(a,M-2,M);}
  67. template <class T> inline T gcd(T a,T b){if(b==0)return a;return gcd(b,a%b);}
  68. template <class T> inline T lcm(T a,T b) {a=abs(a);b=abs(b); return (a/gcd(a,b))*b;}
  69.  
  70. int dx[] = { 1,-1, 0, 0};                //graph moves
  71. int dy[] = { 0, 0, 1,-1};               //graph moves
  72.  
  73.  
  74. int main()
  75. {
  76.     #ifdef ERFANUL007
  77.         clock_t tStart = clock();
  78.         freopen("input.txt", "r", stdin);
  79.         freopen("output.txt", "w", stdout);
  80.     #endif
  81.  
  82.     int n, m;
  83.  
  84.     while(~sc2(n, m) && n && m){
  85.         int grid[n+1][m+1], sum[n+1][m+1];
  86.         for(int i=0; i<=n; i++) sum[i][0] = 0;
  87.         for(int j=0; j<=m; j++) sum[0][j] = 0;
  88.         for(int i=1; i<=n; i++){
  89.             for(int j=1; j<=m; j++){
  90.                 sc1(grid[i][j]);
  91.                 sum[i][j] = sum[i-1][j] + sum[i][j-1] - sum[i-1][j-1] + grid[i][j];
  92.             }
  93.         }
  94.         int ans = 0;
  95.         for(int i=1; i<=n; i++){
  96.             for(int j=1; j<=m; j++){
  97.                 for(int k=i; k<=n; k++){
  98.                     for(int l=j; l<=m; l++){
  99.                         int val = sum[k][l] - sum[k][j-1] - sum[i-1][l] + sum[i-1][j-1];
  100.                         if(val == 0){
  101.                             ans = max(ans, (k-i+1)*(l-j+1));
  102.                             // debug(i, j, k, l, ans);
  103.                         }
  104.                     }
  105.                 }
  106.             }
  107.         }
  108.         printf("%d\n", ans);
  109.     }
  110.    
  111.  
  112.     #ifdef ERFANUL007
  113.         fprintf(stderr, "\n>> Runtime: %.10fs\n", (double) (clock() - tStart) / CLOCKS_PER_SEC);
  114.     #endif
  115.  
  116.     return 0;
  117. }
  118.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement