Skip to content

Commit f76e51d

Browse files
committed
test 3d version too now
1 parent 208fc46 commit f76e51d

File tree

1 file changed

+45
-0
lines changed

1 file changed

+45
-0
lines changed

tests/library_checker_aizu_tests/handmade_tests/kd_bit.test.cpp

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,11 @@ int main() {
1010
int m = rnd(1, 100);
1111
KD_BIT<2> bit(n, m);
1212
vector<vector<ll>> a(n, vector<ll>(m, 0));
13+
for (int i = 0; i < n; i++)
14+
for (int j = 0; j < m; j++) {
15+
a[i][j] = rnd(INT_MIN, INT_MAX);
16+
bit.update(i, j, a[i][j]);
17+
}
1318
for (int events = 0; events < 100; events++) {
1419
if (events % 2 == 0) {
1520
int i = rnd(0, n - 1);
@@ -31,6 +36,46 @@ int main() {
3136
}
3237
}
3338
}
39+
for (int num_tests = 0; num_tests < 100; num_tests++) {
40+
int n = rnd(1, 100);
41+
int m = rnd(1, 100);
42+
int l = rnd(1, 100);
43+
KD_BIT<3> bit(n, m, l);
44+
vector<vector<vector<ll>>> a(n,
45+
vector<vector<ll>>(m, vector<ll>(l, 0)));
46+
for (int i = 0; i < n; i++)
47+
for (int j = 0; j < m; j++)
48+
for (int k = 0; k < l; k++) {
49+
a[i][j][k] = rnd(INT_MIN, INT_MAX);
50+
bit.update(i, j, k, a[i][j][k]);
51+
}
52+
for (int events = 0; events < 100; events++) {
53+
if (events % 2 == 0) {
54+
int i = rnd(0, n - 1);
55+
int j = rnd(0, m - 1);
56+
int k = rnd(0, l - 1);
57+
ll upd = rnd(INT_MIN, INT_MAX);
58+
a[i][j][k] += upd;
59+
bit.update(i, j, k, upd);
60+
} else {
61+
int i1 = rnd(0, n);
62+
int j1 = rnd(0, m);
63+
int k1 = rnd(0, l);
64+
int i2 = rnd(0, n);
65+
int j2 = rnd(0, m);
66+
int k2 = rnd(0, l);
67+
if (i1 > i2) swap(i1, i2);
68+
if (j1 > j2) swap(j1, j2);
69+
if (k1 > k2) swap(k1, k2);
70+
ll naive = 0;
71+
for (int i = i1; i < i2; i++)
72+
for (int j = j1; j < j2; j++)
73+
for (int k = k1; k < k2; k++)
74+
naive += a[i][j][k];
75+
assert(naive == bit.query(i1, i2, j1, j2, k1, k2));
76+
}
77+
}
78+
}
3479
cout << "Hello World\n";
3580
return 0;
3681
}

0 commit comments

Comments
 (0)