Submission #71645179
Source Code Expand
#include <bits/stdc++.h>
#define rep(i, s, e) for(int (i) = (s); (i) <= (e); ++(i))
#define _rep(i, s, e) for(int (i) = (s); (i) >= (e); --(i))
#define fep(i, s, e) for(int (i) = (s); (i) < (e); ++(i))
#define _fep(i, s, e) for(int (i) = (s); (i) > (e); --(i))
// #define int long long
#define pii pair<int, int>
using namespace std;
constexpr int inf = numeric_limits<int>::max() / 2;
constexpr int ninf = numeric_limits<int>::min() / 2;
constexpr int mod = 998244353;
constexpr double eps = 1e-9;
int n, q, val[2][19][2];
struct Segtree {
int tr[(1 << 20) + 5], mn[(1 << 20) + 5];
void build(int l, int r, int p) {
if(l == r) {
mn[p] = tr[p];
mn[p << 1] = inf;
mn[p << 1 | 1] = inf;
return;
}
int mid = (l + r) >> 1;
build(l, mid, p << 1);
build(mid + 1, r, p << 1 | 1);
mn[p] = min(tr[p], mn[p << 1] + mn[p << 1 | 1]);
return;
}
void update(int p, int d) {
tr[p] = d;
while(p) {
mn[p] = min(tr[p], mn[p << 1] + mn[p << 1 | 1]);
p >>= 1;
}
return;
}
} tr;
void calc(int &x, int op) {
if(x == (1 << n)) {
x += (1 << n) - 1;
val[op][0][0] = tr.mn[x];
val[op][0][1] = 0;
} else {
x += (1 << n);
val[op][0][0] = 0;
val[op][0][1] = tr.mn[x];
}
int cur = x;
rep(i, 1, n) {
if(cur & 1) {
val[op][i][0] = min(val[op][i - 1][0] + tr.mn[cur ^ 1], val[op][i - 1][1] + tr.mn[cur >> 1]);
val[op][i][1] = val[op][i - 1][1];
} else {
val[op][i][0] = val[op][i - 1][0];
val[op][i][1] = min(val[op][i - 1][1] + tr.mn[cur ^ 1], val[op][i - 1][0] + tr.mn[cur >> 1]);
}
cur >>= 1;
val[op][i][0] = min(val[op][i][0], val[op][i][1] + tr.mn[cur]);
val[op][i][1] = min(val[op][i][1], val[op][i][0] + tr.mn[cur]);
}
return;
}
void solve() {
cin >> n;
fep(i, 1, 1 << (n + 1)) {
cin >> tr.tr[i];
}
tr.build(1, 1 << n, 1);
cin >> q;
while(q--) {
int op, x, y, ans = inf;
cin >> op >> x >> y;
if(op == 1) {
tr.update(x, y);
} else {
calc(x, 0);
calc(y, 1);
rep(i, 0, n) {
if(x == y) {
ans = min(ans, val[0][i][0] + val[1][i][0]);
ans = min(ans, val[0][i][1] + val[1][i][1]);
} else if(x + 1 == y) {
ans = min(ans, val[0][i][1] + val[1][i][0]);
} else if(y + 1 == x) {
ans = min(ans, val[1][i][1] + val[0][i][0]);
}
x >>= 1;
y >>= 1;
}
cout << ans << '\n';
}
}
return;
}
signed main() {
// freopen("bumper.in", "r", stdin);
// freopen("bumper.out", "w", stdout);
ios::sync_with_stdio(0);
cin.tie(0), cout.tie(0);
int T = 1;
while(T--) solve();
return 0;
}
Submission Info
| Submission Time |
|
| Task |
C - Segment Tree |
| User |
Getaway_Car |
| Language |
C++ 23 (gcc 12.2) |
| Score |
100 |
| Code Size |
2622 Byte |
| Status |
AC |
| Exec Time |
108 ms |
| Memory |
9812 KiB |
Compile Error
Main.cpp: In function ‘void calc(int&, int)’:
Main.cpp:3:30: warning: unnecessary parentheses in declaration of ‘i’ [-Wparentheses]
3 | #define rep(i, s, e) for(int (i) = (s); (i) <= (e); ++(i))
| ^~~
Main.cpp:56:9: note: in expansion of macro ‘rep’
56 | rep(i, 1, n) {
| ^~~
Main.cpp:3:30: note: remove parentheses
3 | #define rep(i, s, e) for(int (i) = (s); (i) <= (e); ++(i))
| ^~~
Main.cpp:56:9: note: in expansion of macro ‘rep’
56 | rep(i, 1, n) {
| ^~~
Main.cpp: In function ‘void solve()’:
Main.cpp:5:30: warning: unnecessary parentheses in declaration of ‘i’ [-Wparentheses]
5 | #define fep(i, s, e) for(int (i) = (s); (i) < (e); ++(i))
| ^~~
Main.cpp:73:9: note: in expansion of macro ‘fep’
73 | fep(i, 1, 1 << (n + 1)) {
| ^~~
Main.cpp:5:30: note: remove parentheses
5 | #define fep(i, s, e) for(int (i) = (s); (i) < (e); ++(i))
| ^~~
Main.cpp:73:9: note: in expansion of macro ‘fep’
73 | fep(i, 1, 1 << (n + 1)) {
| ^~~
Main.cpp:3:30: warning: unnecessary parentheses in declaration of ‘i’ [-Wparentheses]
3 | #define rep(i, s, e) for(int (i) = (s); (i) <= (e); ++(i))
| ^~~
Main.cpp:86:25: note: in expansion of macro ‘rep’
86 | rep(i, 0, n) {
| ^~~
Main.cpp:3:30: note: remove parentheses
3 | #define rep(i, s, e) for(int (i) = (s); (i) <= (e); ++(i))
| ^~~
Main.cpp:86:25: note: in expansion of macro ‘rep’
86 | rep(i, 0, n) {
| ^~~
Judge Result
| Set Name |
Sample |
Small |
All |
| Score / Max Score |
0 / 0 |
30 / 30 |
70 / 70 |
| Status |
|
|
|
| Set Name |
Test Cases |
| Sample |
sample01.txt |
| Small |
partial-02-case01-03.txt, partial-02-case01-04.txt, partial-02-case01-08.txt, partial-02-case01-09.txt, partial-02-case01-13.txt, partial-02-case01-14.txt, partial-02-case02-18.txt, partial-02-case02-19.txt, partial-02-case02-23.txt, partial-02-case02-24.txt, partial-02-case03-28.txt, partial-02-case03-29.txt, partial-02-case03-33.txt, partial-02-case03-34.txt, partial-02-case04-38.txt, partial-02-case04-39.txt, partial-02-case04-43.txt, partial-02-case04-44.txt, partial-02-case05-48.txt, partial-02-case05-49.txt, partial-02-case05-53.txt, partial-02-case05-54.txt, partial-02-case05-58.txt, partial-02-case05-59.txt, partial-03-case01-63.txt, partial-03-case01-64.txt, partial-03-case01-65.txt |
| All |
all-02-case01-00.txt, all-02-case01-01.txt, all-02-case01-02.txt, all-02-case01-05.txt, all-02-case01-06.txt, all-02-case01-07.txt, all-02-case01-10.txt, all-02-case01-11.txt, all-02-case01-12.txt, all-02-case02-15.txt, all-02-case02-16.txt, all-02-case02-17.txt, all-02-case02-20.txt, all-02-case02-21.txt, all-02-case02-22.txt, all-02-case03-25.txt, all-02-case03-26.txt, all-02-case03-27.txt, all-02-case03-30.txt, all-02-case03-31.txt, all-02-case03-32.txt, all-02-case04-35.txt, all-02-case04-36.txt, all-02-case04-37.txt, all-02-case04-40.txt, all-02-case04-41.txt, all-02-case04-42.txt, all-02-case05-45.txt, all-02-case05-46.txt, all-02-case05-47.txt, all-02-case05-50.txt, all-02-case05-51.txt, all-02-case05-52.txt, all-02-case05-55.txt, all-02-case05-56.txt, all-02-case05-57.txt, all-03-case01-60.txt, all-03-case01-61.txt, all-03-case01-62.txt, partial-02-case01-03.txt, partial-02-case01-04.txt, partial-02-case01-08.txt, partial-02-case01-09.txt, partial-02-case01-13.txt, partial-02-case01-14.txt, partial-02-case02-18.txt, partial-02-case02-19.txt, partial-02-case02-23.txt, partial-02-case02-24.txt, partial-02-case03-28.txt, partial-02-case03-29.txt, partial-02-case03-33.txt, partial-02-case03-34.txt, partial-02-case04-38.txt, partial-02-case04-39.txt, partial-02-case04-43.txt, partial-02-case04-44.txt, partial-02-case05-48.txt, partial-02-case05-49.txt, partial-02-case05-53.txt, partial-02-case05-54.txt, partial-02-case05-58.txt, partial-02-case05-59.txt, partial-03-case01-63.txt, partial-03-case01-64.txt, partial-03-case01-65.txt, sample01.txt |
| Case Name |
Status |
Exec Time |
Memory |
| all-02-case01-00.txt |
AC |
21 ms |
3484 KiB |
| all-02-case01-01.txt |
AC |
23 ms |
3600 KiB |
| all-02-case01-02.txt |
AC |
27 ms |
3448 KiB |
| all-02-case01-05.txt |
AC |
22 ms |
3416 KiB |
| all-02-case01-06.txt |
AC |
24 ms |
3480 KiB |
| all-02-case01-07.txt |
AC |
29 ms |
3532 KiB |
| all-02-case01-10.txt |
AC |
23 ms |
3672 KiB |
| all-02-case01-11.txt |
AC |
25 ms |
3540 KiB |
| all-02-case01-12.txt |
AC |
31 ms |
3536 KiB |
| all-02-case02-15.txt |
AC |
25 ms |
3548 KiB |
| all-02-case02-16.txt |
AC |
28 ms |
3544 KiB |
| all-02-case02-17.txt |
AC |
34 ms |
3620 KiB |
| all-02-case02-20.txt |
AC |
24 ms |
3480 KiB |
| all-02-case02-21.txt |
AC |
29 ms |
3416 KiB |
| all-02-case02-22.txt |
AC |
39 ms |
3540 KiB |
| all-02-case03-25.txt |
AC |
29 ms |
3668 KiB |
| all-02-case03-26.txt |
AC |
33 ms |
3548 KiB |
| all-02-case03-27.txt |
AC |
43 ms |
3692 KiB |
| all-02-case03-30.txt |
AC |
27 ms |
3580 KiB |
| all-02-case03-31.txt |
AC |
32 ms |
3492 KiB |
| all-02-case03-32.txt |
AC |
45 ms |
3584 KiB |
| all-02-case04-35.txt |
AC |
33 ms |
4224 KiB |
| all-02-case04-36.txt |
AC |
46 ms |
4924 KiB |
| all-02-case04-37.txt |
AC |
69 ms |
6520 KiB |
| all-02-case04-40.txt |
AC |
48 ms |
6612 KiB |
| all-02-case04-41.txt |
AC |
45 ms |
5044 KiB |
| all-02-case04-42.txt |
AC |
54 ms |
4392 KiB |
| all-02-case05-45.txt |
AC |
62 ms |
9692 KiB |
| all-02-case05-46.txt |
AC |
69 ms |
9684 KiB |
| all-02-case05-47.txt |
AC |
84 ms |
9664 KiB |
| all-02-case05-50.txt |
AC |
64 ms |
9688 KiB |
| all-02-case05-51.txt |
AC |
73 ms |
9620 KiB |
| all-02-case05-52.txt |
AC |
87 ms |
9624 KiB |
| all-02-case05-55.txt |
AC |
66 ms |
9648 KiB |
| all-02-case05-56.txt |
AC |
75 ms |
9692 KiB |
| all-02-case05-57.txt |
AC |
88 ms |
9584 KiB |
| all-03-case01-60.txt |
AC |
90 ms |
9620 KiB |
| all-03-case01-61.txt |
AC |
73 ms |
9596 KiB |
| all-03-case01-62.txt |
AC |
77 ms |
9812 KiB |
| partial-02-case01-03.txt |
AC |
31 ms |
3536 KiB |
| partial-02-case01-04.txt |
AC |
31 ms |
3456 KiB |
| partial-02-case01-08.txt |
AC |
33 ms |
3484 KiB |
| partial-02-case01-09.txt |
AC |
33 ms |
3412 KiB |
| partial-02-case01-13.txt |
AC |
35 ms |
3548 KiB |
| partial-02-case01-14.txt |
AC |
35 ms |
3456 KiB |
| partial-02-case02-18.txt |
AC |
44 ms |
3460 KiB |
| partial-02-case02-19.txt |
AC |
51 ms |
3528 KiB |
| partial-02-case02-23.txt |
AC |
48 ms |
3412 KiB |
| partial-02-case02-24.txt |
AC |
39 ms |
3620 KiB |
| partial-02-case03-28.txt |
AC |
64 ms |
3692 KiB |
| partial-02-case03-29.txt |
AC |
65 ms |
3732 KiB |
| partial-02-case03-33.txt |
AC |
64 ms |
3512 KiB |
| partial-02-case03-34.txt |
AC |
64 ms |
3576 KiB |
| partial-02-case04-38.txt |
AC |
89 ms |
6544 KiB |
| partial-02-case04-39.txt |
AC |
87 ms |
6620 KiB |
| partial-02-case04-43.txt |
AC |
72 ms |
4320 KiB |
| partial-02-case04-44.txt |
AC |
77 ms |
5040 KiB |
| partial-02-case05-48.txt |
AC |
108 ms |
9732 KiB |
| partial-02-case05-49.txt |
AC |
106 ms |
9552 KiB |
| partial-02-case05-53.txt |
AC |
105 ms |
9584 KiB |
| partial-02-case05-54.txt |
AC |
103 ms |
9760 KiB |
| partial-02-case05-58.txt |
AC |
106 ms |
9656 KiB |
| partial-02-case05-59.txt |
AC |
103 ms |
9580 KiB |
| partial-03-case01-63.txt |
AC |
106 ms |
9692 KiB |
| partial-03-case01-64.txt |
AC |
92 ms |
9676 KiB |
| partial-03-case01-65.txt |
AC |
94 ms |
9620 KiB |
| sample01.txt |
AC |
1 ms |
3556 KiB |