QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#820475#9727. Barkley IIIsolar_express#TL 1725ms48424kbC++233.9kb2024-12-18 21:34:082024-12-18 21:34:08

Judging History

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

  • [2025-01-13 03:55:43]
  • hack成功,自动添加数据
  • (/hack/1447)
  • [2024-12-18 21:34:08]
  • 评测
  • 测评结果:TL
  • 用时:1725ms
  • 内存:48424kb
  • [2024-12-18 21:34:08]
  • 提交

answer

#include<bits/stdc++.h>
#define ll unsigned long long 
#define N 1000005
#define bd 63
using namespace std;
int n,q,tp;
ll a[N];
ll tr[N<<3],tg[N<<3];
ll mx=(1ull<<63)-1;
// int totcnt;
void pushup(int x){
    tr[x]=tr[x<<1]&tr[x<<1|1];
}
void pushdown(int x){
    tr[x<<1]&=tg[x];
    tr[x<<1|1]&=tg[x];
    tg[x<<1]&=tg[x];
    tg[x<<1|1]&=tg[x];
    tg[x]=mx;
}
void modify(int x,int l,int r,int L,int R,ll v){
    // ++totcnt;
    if(l==r&&tp==2){
        tr[x]=a[l]; tg[x]=mx;
        return;
    }
    if(L<=l&&r<=R){
        tr[x]&=v,tg[x]&=v;
        return;
    }
    pushdown(x);
    int mid=l+r>>1;
    if(L<=mid) modify(x<<1,l,mid,L,R,v);
    if(R>mid) modify(x<<1|1,mid+1,r,L,R,v);
    pushup(x);
}
ll qry(int x,int l,int r,int L,int R){
    // ++totcnt;
    if(L<=l&&r<=R) return tr[x];
    pushdown(x);
    int mid=l+r>>1;
    if(R<=mid) return qry(x<<1,l,mid,L,R);
    if(L>mid) return qry(x<<1|1,mid+1,r,L,R);
    return qry(x<<1,l,mid,L,R)&qry(x<<1|1,mid+1,r,L,R);
}
int getnxt(int x,int l,int r,int pos,int bit){
    // ++totcnt;
    // if(bit==0){
    //     cerr<<"fking: "<<x<<" "<<l<<" "<<r<<" "<<pos<<'\n';
    // }
    if(l==r){
        if(tr[x]&(1ull<<bit)) return -1;
        else return l;
    }
    pushdown(x);
    int mid=l+r>>1;
    if(pos>mid||tr[x<<1]&(1ull<<bit)) return getnxt(x<<1|1,mid+1,r,pos,bit);
    int res=getnxt(x<<1,l,mid,pos,bit);
    if(res==-1) res=getnxt(x<<1|1,mid+1,r,pos,bit);
    return res;
}
int getpre(int x,int l,int r,int pos,int bit){
    // ++totcnt;
    if(l==r){
        if(tr[x]&(1ull<<bit)) return -1;
        else return l;
    }
    pushdown(x);
    int mid=l+r>>1;
    if(pos<=mid||tr[x<<1|1]&(1ull<<bit)) return getpre(x<<1,l,mid,pos,bit);
    int res=getpre(x<<1|1,mid+1,r,pos,bit);
    if(res==-1) res=getpre(x<<1,l,mid,pos,bit);
    return res;
}
vector<pair<int,ll> > v1,v2;
int main(){
    ios::sync_with_stdio(0);
    cin.tie(0);
    cin>>n>>q;
    tp=2;
    for(int i=1;i<=n;++i){
        cin>>a[i];
        modify(1,1,n,i,i,a[i]);
    }
    // cerr<<qry(1,1,n,1,n)<<'\n';
    while(q--){
        int l,r;
        ll x;
        cin>>tp;
        if(tp==1){
            cin>>l>>r>>x;
            modify(1,1,n,l,r,x);
        }else if(tp==2){
            cin>>l>>x;
            a[l]=x;
            modify(1,1,n,l,l,x);
        }else{
            cin>>l>>r;
            v1.clear(),v2.clear();
            ll V1=qry(1,1,n,l,l),V2=qry(1,1,n,r,r);
            for(int i=0;i<bd;++i){
                int p=l;
                if(V1&(1ull<<i)){
                    p=getnxt(1,1,n,l,i);
                    if(p==-1) p=n+1;
                }
                v1.push_back(make_pair(p,(1ull<<i)));
            }
            for(int i=0;i<bd;++i){
                int p=r;
                if(V2&(1ull<<i)){
                    p=getpre(1,1,n,r,i);
                    if(p==-1) p=0;
                }
                v2.push_back(make_pair(p,(1ull<<i)));
            }
            sort(v1.begin(),v1.end());
            sort(v2.begin(),v2.end());
            for(int i=1;i<bd;++i) v2[i].second|=v2[i-1].second;
            for(int i=bd-2;i>=0;--i) v1[i].second|=v1[i+1].second;
            // cerr<<"v1:\n";
            // for(auto [pos,v]:v1)
            //     cerr<<pos<<" "<<v<<'\n';
            // cerr<<"v2:\n";
            // for(auto [pos,v]:v2)
            //     cerr<<pos<<" "<<v<<'\n';
            int pos=-1;
            ll ans=0;
            while(pos+1<bd&&v2[pos+1].first<=l) ++pos;
            if(pos!=-1){
                ans=v2[pos].second;
            }
            for(int i=0;i<bd;++i){
                if(v1[i].first>r+1) break;
                while(pos+1<bd&&v2[pos+1].first<=v1[i].first) ++pos;
                if(pos>=0&&v2[pos].first<=v1[i].first) ans=max(ans,v1[i].second&v2[pos].second);
            }
            cout<<ans<<'\n';
        }
    }
    // cerr<<totcnt<<'\n';
    return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 0ms
memory: 7700kb

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: 1ms
memory: 7636kb

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: 2ms
memory: 7604kb

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

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: 145ms
memory: 13520kb

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: 1725ms
memory: 46736kb

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: 1623ms
memory: 48348kb

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: 1655ms
memory: 48424kb

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: 1661ms
memory: 48264kb

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: 1ms
memory: 7760kb

input:

2 2
3937866409909043622 2873041425983999763
2 2 3645842096674595914
2 1 5018240021376355677

output:


result:

ok 0 lines

Test #11:

score: 0
Accepted
time: 1636ms
memory: 48356kb

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: 1645ms
memory: 48264kb

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: 1663ms
memory: 48332kb

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: 1652ms
memory: 48372kb

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: 1691ms
memory: 48280kb

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: 1642ms
memory: 48336kb

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: 1639ms
memory: 48264kb

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

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: