Trang Trí Đèn Năm Mới

 avatar
unknown
c_cpp
2 months ago
885 B
5
Indexable
#include <bits/stdc++.h>

using namespace std;

const int mxN = 1011;

char s[mxN][mxN];
int m, n, q, a[mxN][mxN], b[mxN][mxN], f[mxN][mxN];

int Solve(int x1, int y1, int x2, int y2) {
    return f[x2][y2]-f[x1-1][y2]-f[x2][y1-1]+f[x1-1][y1-1];
}

int main() {
    cin >> m >> n >> q;
    for(int i = 0; i < m; ++i)
        cin >> s[i];

    for(int i = 1; i <= m; ++i)
        for(int j = 1; j <= n; ++j) a[i][j] = (s[i-1][j-1] == '*');

    for(int i = 1; i < m; ++i)
        for(int j = 1; j < n; ++j) b[i][j] = a[i][j]+a[i][j+1]+a[i+1][j]+a[i+1][j+1];

    for(int i = 1; i < m; ++i)
        for(int j = 1; j < n; ++j) f[i][j] = f[i-1][j]+f[i][j-1]-f[i-1][j-1]+(b[i][j]%2);

    for(int i = 1; i <= q; ++i) {
        int x1, y1, x2, y2;
        cin >> x1 >> y1 >> x2 >> y2;
        cout << (Solve(x1, y1, x2-1, y2-1) == 0 ? "YES" : "NO");
    }
}
Editor is loading...
Leave a Comment