結果
問題 | No.755 Zero-Sum Rectangle |
ユーザー |
![]() |
提出日時 | 2018-12-03 00:06:27 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 113 ms / 2,000 ms |
コード長 | 1,719 bytes |
コンパイル時間 | 1,864 ms |
コンパイル使用メモリ | 199,196 KB |
最終ジャッジ日時 | 2025-01-06 17:58:02 |
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | AC * 11 TLE * 1 |
ソースコード
#include <bits/stdc++.h>#define rep(i, a, n) for(int i = a; i < n; i++)#define repr(i, a, b) for(int i = a; i >= b; i--)#define int long long#define all(a) a.begin(), a.end()#define chmax(x, y) x = max(x, y)#define chmin(x, y) x = min(x, y)using namespace std;typedef pair<int, int> P;const int mod = 1000000007;const int INF = 1e18;struct CumulativeSum2D{vector<vector<int> > data;CumulativeSum2D(int H, int W) : data(H + 1, vector<int>(W + 1, 0)) {}void add(int x, int y, int z){++x, ++y;if(x >= data.size() || y >= data[0].size()) return;data[x][y] += z;}void build(){for(int i = 1; i < data.size(); i++) {for(int j = 1; j < data[i].size(); j++) {data[i][j] += data[i][j - 1] + data[i - 1][j] - data[i - 1][j - 1];}}}int query(int sx, int sy, int gx, int gy){return (data[gx][gy] - data[sx][gy] - data[gx][sy] + data[sx][sy]);}};signed main(){ios::sync_with_stdio(false);cin.tie(0);int n, m;cin >> n >> m;CumulativeSum2D cs(m, m);rep(i, 0, m){rep(j, 0, m){int a;cin >> a;cs.add(i, j, a);}}cs.build();while(n--){int x, y;cin >> x >> y;x--; y--;int ans = 0;for(int i = 0; i <= x; i++){for(int j = 0; j <= y; j++){for(int k = x; k < m; k++){for(int l = y; l < m; l++){int tmp = cs.query(i, j, k + 1, l + 1);if(tmp == 0) ans++;}}}}cout << ans << endl;}}