Advertisement
GilsonMuniz

Jogo do Quadrado

Apr 5th, 2020
210
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.90 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. // Deu certo !!!
  6. int main ()
  7. {
  8.     int i, j, k;
  9.     int n, m;
  10.     int s;
  11.     int q;
  12.     int valor;
  13.     bool um;
  14.  
  15.     cin >> n >> m;
  16.  
  17.     int M[n + 1][m + 1], S[n + 1][m + 1];
  18.  
  19.     for(j = 0; j <= m; j++)  // Zerando a linha [0] de M e S
  20.     {
  21.         M[0][j] = 0;
  22.         S[0][j] = 0;
  23.     }
  24.  
  25.     for(i = 0; i <= n; i++)  // Zerando a coluna [0] de M e S
  26.     {
  27.         M[i][0] = 0;
  28.         S[i][0] = 0;
  29.     }
  30.  
  31.     for(i = 1; i <= n; i++)
  32.         for(j = 1; j <= m; j++)
  33.         {
  34.             cin >> valor;
  35.  
  36.             if(valor) // Se o valor inserido for diferente de 0
  37.                 M[i][j] = 1;
  38.             else // Se não
  39.                 M[i][j] = 0;
  40.         }
  41.  
  42.     s = 0;
  43.     for(j = 1; j <= m; j++) // Calculando a primeira linha da matriz S
  44.     {
  45.         s += M[1][j];
  46.         S[1][j] = s;
  47.     }
  48.  
  49.     s = 0;
  50.     for(i = 1; i <= n; i++) // Calculando a primeira coluna da matriz S
  51.     {
  52.         s += M[i][1];
  53.         S[i][1] = s;
  54.     }
  55.  
  56.     for(i = 2; i <= n; i++) // Calculando as demais posições da matriz S
  57.         for(j = 2; j <= m; j++)
  58.             S[i][j] = M[i][j] + S[i - 1][j] + S[i][j - 1] - S[i - 1][j - 1];
  59.  
  60.     cin >> q; // Número de consultas
  61.     for(k = 0; k < q; k++)
  62.     {
  63.         cin >> s; // Ordem das submatrizes
  64.         s--;
  65.  
  66.         um = false;
  67.         for(i = 1; i <= n - s && um == false; i++)
  68.             for(j = 1; j <= m - s; j++)
  69.             {
  70.                 valor = S[i + s][j + s] - S[i - 1][j + s] - S[i + s][j - 1] + S[i - 1][j - 1]; // Soma interna da submatriz s x s
  71.                
  72.                
  73.                 if(valor == (s + 1) * (s + 1)) // Se a soma interna da submatriz for igual ao valor de s x s
  74.                     um = true; // Resposta = yes
  75.             }
  76.  
  77.         if(um)
  78.             cout << "yes" << "\n";
  79.         else
  80.             cout << "no" << "\n";
  81.     }
  82.  
  83.     return 0;
  84. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement