QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#821513 | #9727. Barkley III | TosakaUCW | WA | 796ms | 64544kb | C++23 | 5.1kb | 2024-12-19 16:20:54 | 2024-12-19 16:20:55 |
Judging History
answer
#include <bits/stdc++.h>
using i64 = long long;
#define int i64
#define pb push_back
#define ep emplace
#define eb emplace_back
using std::cerr;
// using namespace std::views;
// using namespace std::ranges;
using std::max, std::min, std::swap, std::array;
using std::cin, std::cout, std::string, std::vector;
using std::ostream;
int read(int x = 0, int f = 0, char ch = getchar()) {
while (ch < 48 or 57 < ch) f = ch == 45, ch = getchar();
while(48 <= ch and ch <= 57) x = x * 10 + ch - 48, ch = getchar();
return f ? -x : x;
}
template <class T1, class T2> ostream &operator<<(ostream &os, const std::pair<T1, T2> &a) { return os << "(" << a.first << ", " << a.second << ")"; };
template <class T> ostream &operator<<(ostream &os, const vector<T> &as) { const int sz = as.size(); os << "["; for (int i = 0; i < sz; ++i) { if (i >= 256) { os << ", ..."; break; } if (i > 0) { os << ", "; } os << as[i]; } return os << "]"; }
template <class T> void pv(T a, T b) { for (T i = a; i != b; ++i) cerr << *i << " "; cerr << '\n'; }
using pii = std::pair<int, int>;
#define fi first
#define se second
const int N = 1e6 + 5;
const int INF = (1ULL << 63) - 1LL;
pii t[N << 4];
int tag[N << 4];
int n, q;
int a[N];
pii operator + (pii a, pii b) {
pii res;
res.fi = a.fi & b.fi;
res.se = (a.se & b.fi) | (a.fi & b.se);
return res;
}
void change(int p, int l, int r, int val) {
t[p].fi &= val;
tag[p] &= val;
if (l == r) t[p].se = INF ^ t[p].fi;
else t[p].se &= val;
}
struct SegTree {
#define ls (p << 1)
#define rs (p << 1 | 1)
#define mid (l + r >> 1)
void pushup(int p) {
t[p] = t[ls] + t[rs];
}
void pushdown(int p, int l, int r) {
if (tag[p] == INF) return;
change(ls, l, mid, tag[p]);
change(rs, mid + 1, r, tag[p]);
tag[p] = INF;
}
void build(int p, int l, int r) {
tag[p] = INF;
if (l == r) {
t[p] = {a[l], INF ^ a[l]};
return;
}
build(ls, l, mid);
build(rs, mid + 1, r);
pushup(p);
}
void update(int p, int l, int r, int ql, int qr, int val) {
if (ql <= l and r <= qr) {
// cerr << "update range: " << l << ' ' << r << ' ' << t[p] << '\n';
if (ql == qr) {
t[p] = {val, INF ^ val};
} else {
change(p, l, r, val);
}
// cerr << "update range: " << l << ' ' << r << ' ' << t[p] << '\n';
return;
}
pushdown(p, l, r);
if (ql <= mid) update(ls, l, mid, ql, qr, val);
if (mid < qr) update(rs, mid + 1, r, ql, qr, val);
pushup(p);
}
pii query(int p, int l, int r, int ql, int qr) {
if (ql > qr) return {INF, 0};
if (ql <= l and r <= qr) {
// cerr << "query: " << l << ' ' << r << ' ' << t[p] << '\n';
return t[p];
}
pushdown(p, l, r);
pii res = {INF, 0};
if (ql <= mid) res = res + query(ls, l, mid, ql, qr);
if (mid < qr) res = res + query(rs, mid + 1, r, ql, qr);
// cerr << "query: " << l << ' ' << r << ' ' << res << '\n';
return res;
}
int find(int p, int l, int r, int ql, int qr, int k) {
// cerr << "find: " << l << ' ' << r << ' '
// << ql << ' ' << qr << ' ' << k << '\n';
if (ql <= l and r <= qr) {
if (! (t[p].se >> k & 1)) return 0;
if (l == r) return l;
pushdown(p, l, r);
if (t[ls].se >> k & 1) return find(ls, l, mid, ql, qr, k);
return find(rs, mid + 1, r, ql, qr, k);
}
pushdown(p, l, r);
int res = 0;
if (ql <= mid) res = find(ls, l, mid, ql, qr, k);
if (mid < qr and !res) res = find(rs, mid + 1, r, ql, qr, k);
return res;
}
} seg;
void solve() {
n = read();
q = read();
for (int i = 1; i <= n; i++) a[i] = read();
seg.build(1, 1, n);
while (q--) {
int opt = read();
if (opt == 1) {
int l = read();
int r = read();
int x = read();
seg.update(1, 1, n, l, r, x);
}
if (opt == 2) {
int s = read();
int x = read();
seg.update(1, 1, n, s, s, x);
}
if (opt == 3) {
int l = read();
int r = read();
pii res = seg.query(1, 1, n, l, r);
// cerr << "tres: ";
// cerr << res << '\n';
if (res.se) {
int pos = 63 - __builtin_clzll(res.se);
pos = seg.find(1, 1, n, l, r, pos);
// cerr << "pos: " << pos << '\n';
res = seg.query(1, 1, n, l, pos - 1)
+ seg.query(1, 1, n, pos + 1, r);
}
// cerr << "-----ans: ";
cout << res.fi << '\n';
}
}
}
/*
0011
1000
0111
0110
0111
0000
0011
*/
signed main() {
// for (int T = read(); T--; solve());
solve();
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 0ms
memory: 7708kb
input:
5 9 7 7 7 6 7 3 1 5 2 1 3 3 1 5 3 1 3 1 1 2 3 3 1 3 2 2 8 3 1 3 3 1 2
output:
7 6 7 3 3 8
result:
ok 6 lines
Test #2:
score: 0
Accepted
time: 2ms
memory: 7768kb
input:
10 10 6760061359215711796 1568091718842717482 1568091718842717482 1568091718842717482 5232472783634052627 8795942500783873690 1568091718842717482 1568091718842717482 1568091718842717482 1568091718842717482 1 3 5 7587422031989082829 3 6 10 1 7 8 5197616143400216932 2 4 2518604563805514908 2 2 4533959...
output:
1568091718842717482 35184908959744 176025477579040 8795942500783873690
result:
ok 4 lines
Test #3:
score: 0
Accepted
time: 1ms
memory: 7728kb
input:
100 100 4263579105072360993 4263579105072360993 4263579105072360993 4263579105072360993 4263579105072360993 4263579105072360993 4263579105072360993 4263579105072360993 4263579105072360993 625967318191814868 4263579105072360993 4263579105072360993 4263579105072360993 4263579105072360993 4263579105072...
output:
576531121047601152 1 576460752303423488 4263579105072360993 1306043896232411137 4263579105072360993 576531121047601152 633397148123136 0 1153488865559840256 1152922054496880128 1730020640668059136 3533641810948498945 67108864 1730020640668059136 0 633397148123136 1729382296723653632 0 17300206406680...
result:
ok 78 lines
Test #4:
score: 0
Accepted
time: 2ms
memory: 7676kb
input:
1000 1000 3368486440884437410 3368486440884437410 3368486440884437410 3368486440884437410 3368486440884437410 3368486440884437410 3368486440884437410 3368486440884437410 3368486440884437410 3368486440884437410 3368486440884437410 3639580211161047627 3368486440884437410 3368486440884437410 3368486440...
output:
3368486440884437410 3368486440884437410 3368486440884437410 2251799981457408 0 0 3368486440884437410 0 3326828075601101216 592509842556584322 0 0 0 0 0 0 37154696925806592 0 0 0 3368486440884437410 0 0 3368486440884437410 0 578998425140330496 0 0 134217728 0 3368486440884437410 2306405959167115264 0...
result:
ok 732 lines
Test #5:
score: 0
Accepted
time: 50ms
memory: 14624kb
input:
100000 100000 4364025563773184234 7745126251050571359 5111681002836044963 7745126251050571359 7745126251050571359 7745126251050571359 7745126251050571359 7745126251050571359 7745126251050571359 7745126251050571359 7745126251050571359 7745126251050571359 7222555899134537718 7745126251050571359 686495...
output:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4613942216556019776 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...
result:
ok 75105 lines
Test #6:
score: 0
Accepted
time: 793ms
memory: 64544kb
input:
1000000 1000000 5485203341817263234 5485203341817263234 5485203341817263234 5485203341817263234 5485203341817263234 5485203341817263234 5485203341817263234 5485203341817263234 5485203341817263234 5485203341817263234 5485203341817263234 5485203341817263234 5485203341817263234 5485203341817263234 5485...
output:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8796093022208 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 576460754450907136 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0...
result:
ok 749866 lines
Test #7:
score: 0
Accepted
time: 786ms
memory: 63480kb
input:
1000000 1000000 6478641409915854014 6478641409915854014 6478641409915854014 6478641409915854014 6478641409915854014 6478641409915854014 6478641409915854014 6478641409915854014 6478641409915854014 6478641409915854014 6478641409915854014 815888006180307319 6478641409915854014 6478641409915854014 37784...
output:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...
result:
ok 749822 lines
Test #8:
score: 0
Accepted
time: 796ms
memory: 63508kb
input:
1000000 1000000 8129239286682760854 3981028880940170401 2535635990161413927 8316479514668652599 5147316903112543089 4630570098268037408 8505388156841465368 2203883581249948495 581610100009626881 5079268521394939 1476469952815397946 4914699404295060276 4440084747042452220 2702894635900623841 90540586...
output:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...
result:
ok 749812 lines
Test #9:
score: 0
Accepted
time: 780ms
memory: 64272kb
input:
1000000 1000000 7320373167365396487 7320373167365396487 937526916087788458 7320373167365396487 7320373167365396487 7320373167365396487 6758767667984378025 7320373167365396487 7320373167365396487 7320373167365396487 5687396935769483606 1467370155631201061 3556475128226340387 2212274051825085385 77978...
output:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...
result:
ok 748638 lines
Test #10:
score: 0
Accepted
time: 0ms
memory: 7724kb
input:
2 2 3937866409909043622 2873041425983999763 2 2 3645842096674595914 2 1 5018240021376355677
output:
result:
ok 0 lines
Test #11:
score: 0
Accepted
time: 770ms
memory: 64108kb
input:
1000000 1000000 4900813446099088166 4900813446099088166 4900813446099088166 4900813446099088166 4900813446099088166 4900813446099088166 4900813446099088166 4900813446099088166 4900813446099088166 4900813446099088166 4900813446099088166 4900813446099088166 4900813446099088166 4900813446099088166 4900...
output:
4900813446099088166 4899930503817200418 4900813446099088166 4899916948900413730 4899916948900413730 4899930503817200418 4899930503817200418 4899930503817200418 4899930503817200418 4900813446099088166 288230380446679040 288230380446679040 4899930503817200418 4899930503817200418 0 768 768 288230724044...
result:
ok 748697 lines
Test #12:
score: 0
Accepted
time: 773ms
memory: 64504kb
input:
1000000 1000000 4896682234503638342 4896682234503638342 4896682234503638342 4896682234503638342 4896682234503638342 4896682234503638342 4896682234503638342 4896682234503638342 4896682234503638342 4896682234503638342 4896682234503638342 4896682234503638342 4896682234503638342 4896682234503638342 4896...
output:
4896682234503638342 4896682234503638342 4896682234503638342 82333682484117506 4896682234503638342 82333682484117506 9150188513918978 9150188513918978 4896682234503638342 4896682234503638342 9150188513918978 4896682234503638342 9150188513918978 4896682234503638342 4896682234503638342 9150188513918978...
result:
ok 748737 lines
Test #13:
score: 0
Accepted
time: 791ms
memory: 63260kb
input:
1000000 1000000 5828086749355423563 5828086749355423563 5828086749355423563 5828086749355423563 5828086749355423563 5828086749355423563 5828086749355423563 5828086749355423563 5828086749355423563 5828086749355423563 5828086749355423563 5828086749355423563 5828086749355423563 5828086749355423563 5828...
output:
5828086749355423563 8192 0 0 1152921504793493761 0 0 0 134217728 5828086749355423563 4647719230811407937 0 0 0 0 4647719230811407937 4611686018427396096 0 0 4415226380288 0 0 0 0 4665729214006427657 0 0 4665729213955833856 0 4665733612138661120 0 0 4611686018429485056 4666015104295802624 0 0 0 0 0 4...
result:
ok 749804 lines
Test #14:
score: 0
Accepted
time: 765ms
memory: 64160kb
input:
1000000 1000000 1970703737173261435 1970703737173261435 1970703737173261435 1970703737173261435 1970703737173261435 1970703737173261435 1970703737173261435 1970703737173261435 1970703737173261435 1970703737173261435 1970703737173261435 1970703737173261435 1970703737173261435 1970703737173261435 1970...
output:
18014398510006272 1970703737173261435 1970703737173261435 18014398510006272 1170935903116331008 1170935903116331008 1242993501449496576 72057598332903424 72127962782629888 72057594037927936 72057598333165568 70405251923968 0 0 0 0 0 0 0 673367418922088530 72127962782892032 18014398509481984 0 704052...
result:
ok 749806 lines
Test #15:
score: -100
Wrong Answer
time: 794ms
memory: 63392kb
input:
1000000 1000000 1268538845505400998 1268538845505400998 1268538845505400998 1268538845505400998 1268538845505400998 1268538845505400998 1268538845505400998 1268538845505400998 1268538845505400998 1268538845505400998 1268538845505400998 1268538845505400998 1268538845505400998 1268538845505400998 1268...
output:
1191203210145169410 0 0 0 0 0 0 0 8589934592 705069918064678 704786953404416 0 0 1268538845505400998 1268538845505400998 4503633987117056 8589934592 0 633318697730048 2251804108783616 0 0 0 0 4503599627374592 0 0 0 0 704791248371712 1099511627776 0 0 0 1268538845505400998 0 0 633318731153408 1268538...
result:
wrong answer 626200th lines differ - expected: '0', found: '4859862932531200'