#include using namespace std; // Deu certo !!! int main () { int i, j, k; int n, m; int s; int q; int valor; bool um; cin >> n >> m; int M[n + 1][m + 1], S[n + 1][m + 1]; for(j = 0; j <= m; j++) // Zerando a linha [0] de M e S { M[0][j] = 0; S[0][j] = 0; } for(i = 0; i <= n; i++) // Zerando a coluna [0] de M e S { M[i][0] = 0; S[i][0] = 0; } for(i = 1; i <= n; i++) for(j = 1; j <= m; j++) { cin >> valor; if(valor) // Se o valor inserido for diferente de 0 M[i][j] = 1; else // Se não M[i][j] = 0; } s = 0; for(j = 1; j <= m; j++) // Calculando a primeira linha da matriz S { s += M[1][j]; S[1][j] = s; } s = 0; for(i = 1; i <= n; i++) // Calculando a primeira coluna da matriz S { s += M[i][1]; S[i][1] = s; } for(i = 2; i <= n; i++) // Calculando as demais posições da matriz S for(j = 2; j <= m; j++) S[i][j] = M[i][j] + S[i - 1][j] + S[i][j - 1] - S[i - 1][j - 1]; cin >> q; // Número de consultas for(k = 0; k < q; k++) { cin >> s; // Ordem das submatrizes s--; um = false; for(i = 1; i <= n - s && um == false; i++) for(j = 1; j <= m - s; j++) { 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 if(valor == (s + 1) * (s + 1)) // Se a soma interna da submatriz for igual ao valor de s x s um = true; // Resposta = yes } if(um) cout << "yes" << "\n"; else cout << "no" << "\n"; } return 0; }