QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#741446#9727. Barkley IIITMM233#TL 326ms19276kbC++232.6kb2024-11-13 14:23:322024-11-13 14:23:37

Judging History

你现在查看的是最新测评结果

  • [2025-01-13 03:55:43]
  • hack成功,自动添加数据
  • (/hack/1447)
  • [2024-11-13 14:23:37]
  • 评测
  • 测评结果:TL
  • 用时:326ms
  • 内存:19276kb
  • [2024-11-13 14:23:32]
  • 提交

answer

#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int maxn = 1e6 + 5;
void solve()
{
    int n, q;
    cin >> n >> q;
    vector<ll> a(n + 1);
    vector<bitset<maxn>> bs1(63), bs0(63);
    for (int i = 1; i <= n; i++)
    {
        cin >> a[i];
        for (int j = 0; j < 63; j++)
        {
            if (a[i] >> j & 1)
            {
                bs1[j].set(i);
            }
            else
            {
                bs0[j].set(i);
            }
        }
    }
    for (int i = 1; i <= q; i++)
    {
        int o;
        cin >> o;
        if (o == 1)
        {
            int l, r;
            ll x;
            cin >> l >> r >> x;
            for (int j = 0; j < 63; j++)
            {
                if (~x >> j & 1)
                {
                    for (int pos = l; pos <= r; pos = bs1[j]._Find_next(pos))
                    {
                        bs1[j].reset(pos);
                        bs0[j].set(pos);
                    }
                }
            }
        }
        else if (o == 2)
        {
            int s;
            ll x;
            cin >> s >> x;
            for (int j = 0; j < 63; j++)
            {
                if (x >> j & 1)
                {
                    bs1[j].set(s);
                    bs0[j].reset(s);
                }
                else
                {
                    bs0[j].set(s);
                    bs1[j].reset(s);
                }
            }
        }
        else
        {
            int l, r;
            cin >> l >> r;
            int pos = 0;
            ll ans = 0;
            for (int j = 62; j >= 0; j--)
            {
                auto x = bs0[j]._Find_next(l - 1);
                if (x > r)
                {
                    ans += (1ll << j);
                    continue;
                }
                auto y = bs0[j]._Find_next(x);
                if (y > r)
                {
                    if (pos && x == pos)
                    {
                        ans += (1ll << j);
                    }
                    else if (!pos)
                    {
                        ans += (1ll << j);
                        pos= x;
                    }
                    else
                    {
                        continue;
                    }
                }
            }
            cout<<ans<<"\n";
        }
    }
}
int main()
{
    ios::sync_with_stdio(0), cin.tie(0);
    int t = 1;
    // cin>>t;
    while (t--)
        solve();
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 5ms
memory: 18528kb

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: 4ms
memory: 18600kb

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: 6ms
memory: 18644kb

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: 10ms
memory: 18512kb

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: 326ms
memory: 19276kb

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: -100
Time Limit Exceeded

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: