Submission #56570126
Source Code Expand
#pragma GCC target("avx2")
#pragma GCC optimize("O3")
#pragma GCC optimize("unroll-loops")
#define _GLIBCXX_DEBUG
// kyopuro2.cpp : このファイルには 'main' 関数が含まれています。プログラム実行の開始と終了がそこで行われます。
//
#include <iostream>
#include <iomanip>
#include <cmath>
#include <string>
#include <algorithm>
#include <ctime>
#include <functional>
#include <vector>
#include <stack>
#include <queue>
#include <map>
#include <set>
#include <tuple>
#include <cassert>
#include <bitset>
#include <sstream>
#include <stdlib.h>
using namespace std;
#define rep(i, n) for (int i = 0; i < (int)(n); i++)
#define all(v) v.begin(), v.end()
#define rall(v) v.rbegin(), v.rend()
#define eb emplace_back
const long long INF = 1LL << 60;
const long long MOD = 998244353;
template<class T> inline bool chmin(T& a, T b) { if (a > b) { a = b; return true; } return false; }
template<class T> inline bool chmax(T& a, T b) { if (a < b) { a = b; return true; } return false; }
using db = double;
using ll = long long;
using ldb = long double;
using ch = char;
using st = string;
using vi = vector<int>;
using vll = vector<ll>;
using vb = vector<bool>;
using vc = vector<ch>;
using vs = vector<st>;
using vvi = vector<vi>;
using vvb = vector<vb>;
using vvc = vector<vc>;
using vvs = vector<vs>;
using vvll = vector<vll>;
using vvvi = vector<vvi>;
using vvvll = vector<vvll>;
using P = pair<int, int>;
using Pll = pair<ll, ll>;
using vP = vector <P>;
using vPll = vector<Pll>;
using p_qi = priority_queue<int>;
// 深さ優先探索
vector<bool> seen(300009, false);
vi L(300009,-1);
vi S(300009.-1);
vi fo;
vi lo;
void dfs(const vi& G, int v,int& fp,int&lp) {
fo[v] = fp++;
seen[v] = true; // v を訪問済にする
// v から行ける各頂点 next_v について
if (!(seen[G[v]])) {
dfs(G, G[v], fp, lp); // 再帰的に探索
}
if (seen[G[v]]) {
if (S[G[v]] > 0) {
L[v] = L[G[v]] + 1;
S[v] = S[G[v]];
}
else {
S[v] = fo[v] - fo[G[v]] + 1;
cout << S[v] << "\n";
L[v] = 1;
}
}
lo[v] = lp++;
}
template< typename T >
T mod_pow(T x, T n, const T& p) {
T ret = 1;
while (n > 0) {
if (n & 1) (ret *= x) %= p;
(x *= x) %= p;
n >>= 1;
}
return ret;
}
int dx[] = { -1,0,1,0 }; int dy[] = { 0,1,0,-1 };
char ldru[] = { 'L','D','R','U' };
ll dp[200009][2][2];
ll GetDigit(ll num) {
return to_string(num).length();
}
int binary(int bina) {
int ans = 0;
for (int i = 0; bina > 0; i++)
{
ans = ans + (bina % 2) * pow(10, i);
bina = bina / 2;
}
return ans;
}
int main() {
ll N;
cin >> N;
vvvi A(103, vvi(103, vi(103)));
rep(x, N)rep(y, N)rep(z, N) {
cin >> A[x][y][z];
}
vvvi RX(103, vvi(103, vi(103,0)));
vvvi RY(103, vvi(103, vi(103,0)));
vvvll RZ(103, vvll(103, vll(103,0)));
rep(x, N)rep(y, N)rep(z, N) {
RX[x + 1][y + 1][z + 1] = A[x][y][z] + RX[x][y + 1][z+1];
}
rep(h, N)rep(t, N)rep(o, N) {
RY[t + 1][h + 1][o + 1] = RX[t + 1][h + 1][o + 1] + RY[t + 1][h][o + 1];
}
rep(c, N)rep(r, N)rep(s, N) {
RZ[s + 1][r + 1][c + 1] = RY[s + 1][r + 1][c + 1] + RZ[s + 1][r + 1][c];
}
ll Q;
cin >> Q;
rep(l, Q) {
ll a, b, c, d, e, f;
cin >> a >> b >> c >> d >> e >> f;
ll ans = 0;
ans += RZ[b][d][f];
ans -= RZ[a - 1][d][f];
ans -= RZ[b][c-1][f];
ans -= RZ[b][d][e-1];
ans += RZ[a - 1][c - 1][f];
ans += RZ[a - 1][d][e - 1];
ans += RZ[b][c - 1][e - 1];
ans -= RZ[a - 1][c - 1][e - 1];
cout << ans << "\n";
}
}
// プログラムの実行: Ctrl + F5 または [デバッグ] > [デバッグなしで開始] メニュー
// プログラムのデバッグ: F5 または [デバッグ] > [デバッグの開始] メニュー
// 作業を開始するためのヒント:
// 1. ソリューション エクスプローラー ウィンドウを使用してファイルを追加/管理します
// 2. チーム エクスプローラー ウィンドウを使用してソース管理に接続します
// 3. 出力ウィンドウを使用して、ビルド出力とその他のメッセージを表示します
// 4. エラー一覧ウィンドウを使用してエラーを表示します
// 5. [プロジェクト] > [新しい項目の追加] と移動して新しいコード ファイルを作成するか、[プロジェクト] > [既存の項目の追加] と移動して既存のコード ファイルをプロジェクトに追加します
// 6. 後ほどこのプロジェクトを再び開く場合、[ファイル] > [開く] > [プロジェクト] と移動して .sln ファイルを選択します
Submission Info
| Submission Time |
|
| Task |
D - Cuboid Sum Query |
| User |
michael_80 |
| Language |
C++ 20 (gcc 12.2) |
| Score |
400 |
| Code Size |
5100 Byte |
| Status |
AC |
| Exec Time |
549 ms |
| Memory |
30204 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 |
13 ms |
29960 KiB |
| 00_sample_01.txt |
AC |
14 ms |
30124 KiB |
| 01_random_00.txt |
AC |
543 ms |
30160 KiB |
| 01_random_01.txt |
AC |
404 ms |
30124 KiB |
| 01_random_02.txt |
AC |
436 ms |
30064 KiB |
| 01_random_03.txt |
AC |
371 ms |
30116 KiB |
| 01_random_04.txt |
AC |
525 ms |
30068 KiB |
| 01_random_05.txt |
AC |
325 ms |
30144 KiB |
| 01_random_06.txt |
AC |
423 ms |
30172 KiB |
| 01_random_07.txt |
AC |
329 ms |
30060 KiB |
| 01_random_08.txt |
AC |
419 ms |
30160 KiB |
| 01_random_09.txt |
AC |
424 ms |
30112 KiB |
| 01_random_10.txt |
AC |
539 ms |
30184 KiB |
| 01_random_11.txt |
AC |
478 ms |
30188 KiB |
| 01_random_12.txt |
AC |
308 ms |
30168 KiB |
| 01_random_13.txt |
AC |
483 ms |
30148 KiB |
| 01_random_14.txt |
AC |
528 ms |
30052 KiB |
| 02_maximum_00.txt |
AC |
549 ms |
30204 KiB |
| 02_maximum_01.txt |
AC |
537 ms |
30160 KiB |
| 02_maximum_02.txt |
AC |
528 ms |
30160 KiB |
| 02_maximum_03.txt |
AC |
526 ms |
30096 KiB |
| 02_maximum_04.txt |
AC |
531 ms |
30172 KiB |