Submission #65702920
Source Code Expand
/*https://atcoder.jp/contests/abc366/tasks/abc366_d*/
/*2025年01月25日 13時12分17秒*/
// #include <atcoder/all>
// using namespace atcoder;
// using mint = modint998244353;
// using mint = modint1000000007;
#include <bits/stdc++.h>
#define all(v) (v).begin(), (v).end()
#define rall(v) (v).rbegin(), (v).rend()
#define rep(i, n) for (long long int i = 0; i < (n); ++i)
#define rep2(i, k, n) for (long long int i = (k); i < (n); ++i)
using namespace std;
using ll = long long;
using vint = vector<int>;
using vll = vector<ll>;
using vvint = vector<vector<int>>;
using vvll = vector<vector<ll>>;
// const ll INF = (ll)2e18+9;
const int INF = (int)2e9 + 7;
template <typename T>
void chmin(T& a, T b) {
a = min(a, b);
}
template <typename T>
void chmax(T& a, T b) {
a = max(a, b);
}
template <typename T>
void print(vector<T> v) {
int n = v.size();
rep(i, n) {
if (i == 0)
cout << v[i];
else
cout << ' ' << v[i];
}
cout << endl;
}
void yesno(bool x) {
puts(x ? "Yes" : "No");
}
void solve();
int main() {
solve();
return 0;
}
template <typename T>
struct Cumsum3d {
vector<vector<vector<T>>> data;
Cumsum3d(vector<vector<vector<T>>> v) {
assert(v.size() != 0);
assert(v[0].size() != 0);
assert(v[0][0].size() != 0);
int n = v.size();
int m = v[0].size();
int l = v[0][0].size();
data = vector(n + 1, vector(m + 1, vector<T>(l + 1)));
vector<tuple<ll, ll, ll, ll>> d = {
{0, 0, -1, 1},
{0, -1, 0, 1},
{0, -1, -1, -1},
{-1, 0, 0, 1},
{-1, 0, -1, -1},
{-1, -1, 0, -1},
{-1, -1, -1, 1},
};
rep2(i, 1, n + 1) rep2(j, 1, m + 1) rep2(k, 1, l + 1) {
data[i][j][k] += v[i - 1][j - 1][k - 1];
for (auto [x, y, z, sign] : d) {
data[i][j][k] += data[i + x][j + y][k + z] * sign;
}
}
}
T sum(int si, int sj, int sk, int fi, int fj, int fk) {
ll ans = 0;
ans += data[fi][fj][fk];
ans -= data[fi][fj][sk];
ans -= data[fi][sj][fk];
ans += data[fi][sj][sk];
ans -= data[si][fj][fk];
ans += data[si][fj][sk];
ans += data[si][sj][fk];
ans -= data[si][sj][sk];
return ans;
}
};
void solve() {
ll N;
cin >> N;
vector<vvll> A(N, vvll(N, vll(N, 0)));
rep(i, N) {
rep(j, N) {
rep(k, N) {
cin >> A[i][j][k];
}
}
}
Cumsum3d cumsum(A);
ll Q;
cin >> Q;
while (Q--) {
ll a, x, b, y, c, z;
cin >> a >> x >> b >> y >> c >> z;
a--, b--, c--;
cout << cumsum.sum(a, b, c, x, y, z) << endl;
}
}
Submission Info
| Submission Time |
|
| Task |
D - Cuboid Sum Query |
| User |
goropikari |
| Language |
C++ 23 (gcc 12.2) |
| Score |
400 |
| Code Size |
2934 Byte |
| Status |
AC |
| Exec Time |
464 ms |
| Memory |
28100 KiB |
Judge Result
| Set Name |
Sample |
All |
| Score / Max Score |
0 / 0 |
400 / 400 |
| Status |
|
|
| Set Name |
Test Cases |
| Sample |
00_sample_00.txt, 00_sample_01.txt |
| All |
00_sample_00.txt, 00_sample_01.txt, 01_random_00.txt, 01_random_01.txt, 01_random_02.txt, 01_random_03.txt, 01_random_04.txt, 01_random_05.txt, 01_random_06.txt, 01_random_07.txt, 01_random_08.txt, 01_random_09.txt, 01_random_10.txt, 01_random_11.txt, 01_random_12.txt, 01_random_13.txt, 01_random_14.txt, 02_maximum_00.txt, 02_maximum_01.txt, 02_maximum_02.txt, 02_maximum_03.txt, 02_maximum_04.txt |
| Case Name |
Status |
Exec Time |
Memory |
| 00_sample_00.txt |
AC |
1 ms |
3460 KiB |
| 00_sample_01.txt |
AC |
1 ms |
3528 KiB |
| 01_random_00.txt |
AC |
457 ms |
25296 KiB |
| 01_random_01.txt |
AC |
330 ms |
27312 KiB |
| 01_random_02.txt |
AC |
361 ms |
17084 KiB |
| 01_random_03.txt |
AC |
318 ms |
9928 KiB |
| 01_random_04.txt |
AC |
434 ms |
26024 KiB |
| 01_random_05.txt |
AC |
252 ms |
27940 KiB |
| 01_random_06.txt |
AC |
351 ms |
16072 KiB |
| 01_random_07.txt |
AC |
293 ms |
5704 KiB |
| 01_random_08.txt |
AC |
345 ms |
20852 KiB |
| 01_random_09.txt |
AC |
351 ms |
21808 KiB |
| 01_random_10.txt |
AC |
454 ms |
24608 KiB |
| 01_random_11.txt |
AC |
401 ms |
18632 KiB |
| 01_random_12.txt |
AC |
266 ms |
7800 KiB |
| 01_random_13.txt |
AC |
394 ms |
25232 KiB |
| 01_random_14.txt |
AC |
433 ms |
27156 KiB |
| 02_maximum_00.txt |
AC |
464 ms |
28100 KiB |
| 02_maximum_01.txt |
AC |
456 ms |
27920 KiB |
| 02_maximum_02.txt |
AC |
451 ms |
27924 KiB |
| 02_maximum_03.txt |
AC |
446 ms |
27968 KiB |
| 02_maximum_04.txt |
AC |
446 ms |
27876 KiB |