結果
| 問題 |
No.755 Zero-Sum Rectangle
|
| コンテスト | |
| ユーザー |
Manuel1024
|
| 提出日時 | 2023-08-17 15:26:11 |
| 言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
| 結果 |
AC
|
| 実行時間 | 198 ms / 2,000 ms |
| コード長 | 1,489 bytes |
| コンパイル時間 | 1,034 ms |
| コンパイル使用メモリ | 80,504 KB |
| 実行使用メモリ | 6,820 KB |
| 最終ジャッジ日時 | 2024-11-26 12:31:29 |
| 合計ジャッジ時間 | 3,204 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 |
| other | AC * 12 |
ソースコード
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
using ll = long long;
int main(){
int n, m; cin >> n >> m;
vector<vector<int>> a(m, vector<int>(m));
for(auto &v: a){
for(auto &it: v) cin >> it;
}
vector<int> x(n), y(n);
for(int i = 0; i < n; i++){
cin >> x[i] >> y[i];
x[i]--; y[i]--;
}
vector<vector<ll>> b(m+1, vector<ll>(m+1, 0));
for(int i = 0; i < m; i++){
for(int j = 0; j < m; j++){
b[i+1][j+1] = b[i][j+1]+b[i+1][j]-b[i][j]+a[i][j];
}
}
vector<vector<int>> mem(m+1, vector<int>(m+1, 0));
for(int i = 0; i < m; i++){
for(int j = 0; j < m; j++){
for(int k = i+1; k <= m; k++){
for(int l = j+1; l <= m; l++){
if(b[k][l]-b[i][l]-b[k][j]+b[i][j] == 0){
mem[i][j]++;
mem[i][l]--;
mem[k][j]--;
mem[k][l]++;
// cerr << i << " " << j << " " << k << " " << l << endl;
}
}
}
}
}
for(int i = 0; i <= m; i++){
for(int j = 0; j < m; j++){
mem[i][j+1] += mem[i][j];
}
}
for(int j = 0; j <= m; j++){
for(int i = 0; i < m; i++){
mem[i+1][j] += mem[i][j];
}
}
for(int i = 0; i < n; i++){
cout << mem[x[i]][y[i]] << '\n';
}
return 0;
}
Manuel1024