// Gemini 3 #include #include #include using namespace std; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); int H, W; if (!(cin >> H >> W)) return 0; vector S(H); for (int i = 0; i < H; ++i) { cin >> S[i]; } int Q; if (!(cin >> Q)) return 0; // 2次元累積和などを前計算する配列を用意 // 各マスの状態(白マスか、周辺の状況など)をベースに累積和を構築する // ... while (Q--) { int A, B, C, D; cin >> A >> B >> C >> D; --A; --B; --C; --D; long long ans = 0; // ※もしクエリごとの縦幅 (C - A + 1) が小さい場合や、 // 行方向・列方向に分解できる性質を利用して O(C - A + 1) や O(1) で計算します。 // (以下は概念的な高速化のイメージです) cout << ans << "\n"; } return 0; }