deushiro

Untitled

Dec 26th, 2019
233
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.19 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. typedef long long ll;
  6.  
  7. const int mod = 1e9 + 7;
  8.  
  9.  
  10. int main() {
  11.     ios_base::sync_with_stdio(false);
  12.     cin.tie(0);
  13.     cout.tie(0);
  14.     int n;
  15.     cin >> n;
  16.     int maxi = 0;
  17.     vector<vector<char>> a(n, vector<char>(n));
  18.     vector<vector<int>> dp(n, vector<int>(n));
  19.     for(int i = 0; i < n; ++i){
  20.         string s;
  21.         cin >> s;
  22.         for(int j = 0; j < n; ++j){
  23.             a[i][j] = s[j];
  24.         }
  25.     }
  26.     if(a[0][0] == '0')
  27.         dp[0][0] = 0;
  28.     else
  29.         dp[0][0] = 1;
  30.     maxi = max(dp[0][0], maxi);
  31.     for(int i = 0; i < n; ++i){
  32.         if(a[i][0] == '1')
  33.             dp[i][0] = 1;
  34.         maxi = max(dp[i][0], maxi);
  35.     }
  36.     for(int i = 0; i < n; ++i){
  37.         if(a[0][i] == '1')
  38.             dp[0][i] = 1;
  39.         maxi = max(dp[0][i], maxi);
  40.     }
  41.     for(int i = 1; i < n; ++i){
  42.         for(int j = 1; j < n; ++j){
  43.             if(a[i][j] == '0')
  44.                 continue;
  45.             else{
  46.                 dp[i][j] = min(dp[i - 1][j - 1], min(dp[i - 1][j], dp[i][j - 1])) + 1;
  47.             }
  48.             maxi = max(dp[i][j], maxi);
  49.         }
  50.     }
  51.     cout << 1LL * maxi * maxi << endl;
  52. }
Advertisement
Add Comment
Please, Sign In to add comment