QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#901212#9727. Barkley III.5 ulp (Maxim Plyushkin, Egor Belousov, Maxim Inyutin)#TL 1256ms151824kbC++234.0kb2025-02-15 19:52:572025-02-15 19:53:07

Judging History

This is the latest submission verdict.

  • [2025-02-15 19:53:07]
  • Judged
  • Verdict: TL
  • Time: 1256ms
  • Memory: 151824kb
  • [2025-02-15 19:52:57]
  • Submitted

answer

#include <bits/stdc++.h>

using namespace std;
using ll = long long;
using ull = unsigned long long;

struct item {
    ull m1{0}, m2{0}, val = -1;
};

struct s_tr {
    vector<item> s;
    vector<ull> to_push;
    vector<int> sz;

    s_tr(const vector<ull> &a) {
        int n = a.size();
        sz.resize(4 * n);
        to_push.resize(4 * n, (ull) -1);
        s.resize(4 * n);
        build(0, 0, n, a);
    }

    item combine(item lhs, item rhs) {
        lhs.val &= rhs.val;
        lhs.m2 |= rhs.m2;
        lhs.m2 |= lhs.m1 & rhs.m1;
        lhs.m1 |= rhs.m1;
        lhs.m1 &= ~lhs.m2;
        return lhs;
    }

    void sets(int v, ull x) {
        if (sz[v] == 1) {
            s[v].m1 |= ~x;
            s[v].val &= x;
        } else {
            s[v].m2 |= ~x;
            s[v].m1 &= x;
            s[v].val &= x;
        }
        to_push[v] &= x;
    }

    void push(int v) {
        sets(v * 2 + 1, to_push[v]);
        sets(v * 2 + 2, to_push[v]);
        to_push[v] = -1;
    }

    void build(int v, int l, int r, const vector<ull> &a) {
        if (l + 1 == r) {
            s[v].m1 = ~a[l];
            s[v].val = a[l];
            s[v].m2 = 0;
            sz[v] = 1;
            return;
        }
        int m = (r + l) / 2;
        build(v * 2 + 1, l, m, a);
        build(v * 2 + 2, m, r, a);
        s[v] = combine(s[v * 2 + 1], s[v * 2 + 2]);
        sz[v] = sz[v * 2 + 1] + sz[v * 2 + 2];
    }

    void upd(int v, int l, int r, int lq, int rq, ull x) {
        if (l >= rq || lq >= r) {
            return;
        }
        if (l >= lq && r <= rq) {
            sets(v, x);
            return;
        }
        int m = (r + l) / 2;
        push(v);
        upd(v * 2 + 1, l, m, lq, rq, x);
        upd(v * 2 + 2, m, r, lq, rq, x);
        s[v] = combine(s[v * 2 + 1], s[v * 2 + 2]);
    }

    void upd(int v, int l, int r, int k, ull x) {
        if (l + 1 == r) {
            s[v].m1 = ~x;
            s[v].val = x;
            return;
        }
        int m = (r + l) / 2;
        push(v);
        if (k < m)upd(v * 2 + 1, l, m, k, x);
        else upd(v * 2 + 2, m, r, k, x);
        s[v] = combine(s[v * 2 + 1], s[v * 2 + 2]);
    }

    item get(int v, int l, int r, int lq, int rq) {
        if (l >= rq || lq >= r) {
            return {};
        }
        if (l >= lq && r <= rq) {
            return s[v];
        }
        int m = (r + l) / 2;
        push(v);
        return combine(get(v * 2 + 1, l, m, lq, rq), get(v * 2 + 2, m, r, lq, rq));
    }

    int find(int v, int l, int r, int lq, int rq, int b) {
        if (l >= rq || lq >= r)return -1;
        if (l >= lq && r <= rq) {
            if (!((1ull << b) & s[v].m1)) {
                return -1;
            }
        }
        if (l + 1 == r) {
            return l;
        }
        int m = (r + l) / 2;
        push(v);
        int L = find(v * 2 + 1, l, m, lq, rq, b);
        if (~L)return L;
        return find(v * 2 + 2, m, r, lq, rq, b);
    }
};

int main() {
    cin.tie(0)->sync_with_stdio(0);
    int n, q;
    cin >> n >> q;
    vector<ull> a(n);
    for (auto &i: a)cin >> i;
    s_tr tree(a);
    while (q--) {
        int t;
        cin >> t;
        if (t == 1) {
            ull l, r, x;
            cin >> l >> r >> x;
            --l;
            tree.upd(0, 0, n, l, r, x);
        } else if (t == 2) {
            ull i, x;
            cin >> i >> x;
            --i;
            tree.upd(0, 0, n, i, x);
        } else {
            int l, r;
            cin >> l >> r;
            --l;
            auto it = tree.get(0, 0, n, l, r);
            if (!it.m1) {
                cout << it.val << "\n";
            } else {
                int b = __lg(it.m1);
                int pos = tree.find(0, 0, n, l, r, b);
                auto L = tree.get(0, 0, n, l, pos).val;
                auto R = tree.get(0, 0, n, pos + 1, r).val;
                cout << (L & R) << "\n";
            }
        }
    }
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 1ms
memory: 3712kb

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: 0ms
memory: 3712kb

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: 0ms
memory: 3712kb

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: 0ms
memory: 3840kb

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: 68ms
memory: 18248kb

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: 990ms
memory: 151816kb

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: 984ms
memory: 151824kb

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: 1051ms
memory: 151808kb

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: 1034ms
memory: 151824kb

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: 3584kb

input:

2 2
3937866409909043622 2873041425983999763
2 2 3645842096674595914
2 1 5018240021376355677

output:


result:

ok 0 lines

Test #11:

score: 0
Accepted
time: 1010ms
memory: 151820kb

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: 1015ms
memory: 151820kb

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: 1003ms
memory: 151808kb

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: 988ms
memory: 151820kb

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: 0
Accepted
time: 991ms
memory: 151824kb

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:

ok 749818 lines

Test #16:

score: 0
Accepted
time: 1008ms
memory: 151820kb

input:

1000000 1000000
8796374617094329340 8796374617094329340 8796374617094329340 8796374617094329340 8796374617094329340 8796374617094329340 8796374617094329340 8796374617094329340 8796374617094329340 8796374617094329340 8796374617094329340 8796374617094329340 8796374617094329340 8796374617094329340 8796...

output:

0
0
0
0
0
0
0
0
0
0
4612249037637189632
0
0
0
0
0
0
144115189706063880
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
8219350795484238412
0
0
0
536870912
0
0
0
0
0
0
8214847195317895748
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
144115188092633600
0
0
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 749921 lines

Test #17:

score: 0
Accepted
time: 976ms
memory: 151720kb

input:

1000000 1000000
1639525139600828208 1639525139600828208 1639525139600828208 1639525139600828208 1639525139600828208 1639525139600828208 1639525139600828208 1639525139600828208 1639525139600828208 1639525139600828208 1639525139600828208 1639525139600828208 1639525139600828208 1639525139600828208 1639...

output:

0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
324259173170675712
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
288231492843216896
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
144115188075864064
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
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 749798 lines

Test #18:

score: 0
Accepted
time: 992ms
memory: 151820kb

input:

1000000 1000000
504297928904866451 504297928904866451 504297928904866451 504297928904866451 504297928904866451 504297928904866451 504297928904866451 504297928904866451 504297928904866451 504297928904866451 504297928904866451 504297928904866451 504297928904866451 504297928904866451 504297928904866451...

output:

504297928904866451
504297928904866451
504297928904866451
504297928904866451
504297928904866451
504297928904866451
504297928904866451
504297928904866451
504297928904866451
504297928904866451
292733989738811392
504297928904866451
504297928904866451
504297928904866451
504297928904866451
504297928904866...

result:

ok 332866 lines

Test #19:

score: 0
Accepted
time: 1201ms
memory: 151820kb

input:

1000000 1000000
2984855923226151208 2984855923226151208 2984855923226151208 2984855923226151208 2984855923226151208 2984855923226151208 2984855923226151208 2984855923226151208 2984855923226151208 2984855923226151208 2984855923226151208 2984855923226151208 2984855923226151208 2984855923226151208 2984...

output:

2984855923226151208

result:

ok single line: '2984855923226151208'

Test #20:

score: 0
Accepted
time: 705ms
memory: 151820kb

input:

1000000 1000000
2067242734448201478 2067242734448201478 2067242734448201478 2067242734448201478 2067242734448201478 2067242734448201478 2067242734448201478 2067242734448201478 2067242734448201478 2067242734448201478 2067242734448201478 2067242734448201478 2067242734448201478 2067242734448201478 2067...

output:

0

result:

ok single line: '0'

Test #21:

score: 0
Accepted
time: 1032ms
memory: 151820kb

input:

1000000 1000000
4549453206535718492 4549453206535718492 4549453206535718492 4549453206535718492 4549453206535718492 4549453206535718492 4549453206535718492 4549453206535718492 4549453206535718492 4549453206535718492 4549453206535718492 4549453206535718492 4549453206535718492 4549453206535718492 4549...

output:

4549453206535718492
4549453206535718492
4549453206535718492
4549453206535718492
4549453206535718492
4549453206535718492
4549453206535718492
4549453206535718492
4549453206535718492
4549453206535718492
4549453206535718492
4549453206535718492
4549453206535718492
4549453206535718492
4549453206535718492
...

result:

ok 1000000 lines

Test #22:

score: 0
Accepted
time: 1008ms
memory: 151824kb

input:

1000000 1000000
508429140500316275 508429140500316275 508429140500316275 508429140500316275 508429140500316275 508429140500316275 508429140500316275 508429140500316275 508429140500316275 508429140500316275 508429140500316275 508429140500316275 508429140500316275 508429140500316275 508429140500316275...

output:

508429140500316275
508429140500316275
508429140500316275
508429140500316275
508429140500316275
508429140500316275
508429140500316275
508429140500316275
508429140500316275
508429140500316275
508429140500316275
508429140500316275
508429140500316275
508429140500316275
508429140500316275
508429140500316...

result:

ok 749894 lines

Test #23:

score: 0
Accepted
time: 1045ms
memory: 151772kb

input:

1000000 1000000
6184554809109693663 6184554809109693663 6184554809109693663 6184554809109693663 6184554809109693663 6184554809109693663 6184554809109693663 6184554809109693663 6184554809109693663 6184554809109693663 6184554809109693663 6184554809109693663 6184554809109693663 6184554809109693663 6184...

output:

72057594037927936
108438303632146450
5819200270512603152
396527890631622850
4683745811488571528
6184554809109693663
0
72057594037927936
108438303632146450
6184554809109693663
6184554809109693663
72059793061183624
36099165763141632
4683745811488571528
6184554809109693663
6184554809109693663
720575940...

result:

ok 332716 lines

Test #24:

score: 0
Accepted
time: 1256ms
memory: 151812kb

input:

1000000 1000000
8665112799136011124 8665112799136011124 8665112799136011124 8665112799136011124 8665112799136011124 8665112799136011124 8665112799136011124 8665112799136011124 8665112799136011124 8665112799136011124 8665112799136011124 8665112799136011124 8665112799136011124 8665112799136011124 8665...

output:

8665112799136011124

result:

ok single line: '8665112799136011124'

Test #25:

score: 0
Accepted
time: 731ms
memory: 151820kb

input:

1000000 1000000
7747499610358061394 7747499610358061394 7747499610358061394 7747499610358061394 7747499610358061394 7747499610358061394 7747499610358061394 7747499610358061394 7747499610358061394 7747499610358061394 7747499610358061394 7747499610358061394 7747499610358061394 7747499610358061394 7747...

output:

0

result:

ok single line: '0'

Test #26:

score: -100
Time Limit Exceeded

input:

1000000 1000000
1006338049885769895 1006338049885769895 1006338049885769895 1006338049885769895 1006338049885769895 1006338049885769895 1006338049885769895 1006338049885769895 1006338049885769895 1006338049885769895 1006338049885769895 1006338049885769895 1006338049885769895 1006338049885769895 1006...

output:

1006338049885769895
1006338049885769895
865598272308383749
1006338049885769895
586620239750365190
1006338049885769895
1006338049885769895
577586652210266114
613615520096321538
1006338049885769895
1006338049885769895
1006338049885769895
1006338049885769895
1006338049885769895
1125899906842624
1006338...

result: