QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#267360 | #7765. Xor Master | kgqy | 25 | 908ms | 119744kb | C++14 | 3.9kb | 2023-11-27 10:36:54 | 2023-11-27 10:36:55 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
#define int unsigned long long
#define lc(x) ((x)<<1)
#define rc(x) ((x)<<1|1)
#define lowbit(x) ((x)&-(x))
inline int read(){
int w=0;char ch=getchar();
while(!isdigit(ch)) ch=getchar();
while(isdigit(ch)) w=w*10+ch-'0',ch=getchar();
return w;
}
int n,q;
int a[500005];
int g[500005];
struct bbd{
int c[500005];
void add(signed x,int v){
while(x<=n) c[x]^=v,x+=lowbit(x);
}
int query(signed x){
int sum=0;
while(x) sum^=c[x],x-=lowbit(x);
return sum;
}
}tra;
struct ba{
int c[70];
int insert(int x){
for(int i=63;i<=63;i--){
if(!(x&(1ll<<i))) continue;
if(!c[i]){
for(int j=i-1;j<=63;j--){
if(x&(1ll<<j)) x^=c[j];
}
c[i]=x;
for(int j=63;j>i;j--){
if(c[j]&(1ll<<i)) c[j]^=x;
}
return x;
}
x^=c[i];
}
return 0;
}
int querymin(int x){
int mx=__lg(x);
for(int i=x;i<=x;i--){
if(!(x&(1ll<<i))) continue;
x^=c[i];
}
return x;
}
}bas;
int qt(int x,int y,int z){
return (x&y)|(x&z)|(y&z);
}
int us1[65],us2[65],uslen;
struct sgt{
vector<int> d[2000005];
int tag[2000005],sum[2000005];
void build(int x,int l,int r){
for(int i=0;(1<<i)<=(r-l+1);i++) d[x].push_back(0);
if(l==r) return;
int mid=(l+r)>>1;
build(lc(x),l,mid);build(rc(x),mid+1,r);
}
void pushtag(int x,int val){
tag[x]^=val;sum[x]=0;
uslen=d[x].size();
for(int i=0;i<uslen;i++){
us2[i]=(d[x][i]&val);
us1[i]=d[x][i]-us2[i];
if(uslen&(1ll<<i)) us1[i]|=val;
}
for(int i=0,jw=0;i<uslen;i++){
d[x][i]=(jw^us1[i]^us2[i]);
jw=qt(~us1[i],us2[i],jw);
sum[x]+=(1ll<<i)*d[x][i];
}
}
void pushdown(int x){
if(!tag[x]) return;
pushtag(lc(x),tag[x]);pushtag(rc(x),tag[x]);
tag[x]=0;
}
void pushup(int x){
for(int i=0;i<d[x].size();i++) d[x][i]=0;
for(int i=0;i<min(d[lc(x)].size(),d[rc(x)].size());i++){
if(i+1<d[x].size()) d[x][i+1]=qt(d[x][i],d[lc(x)][i],d[rc(x)][i]);
d[x][i]=(d[lc(x)][i]^d[rc(x)][i]^d[x][i]);
}
int ls=d[lc(x)].size(),rs=d[rc(x)].size();
if(ls==d[x].size()) d[x][ls-1]|=d[lc(x)][ls-1];
if(rs==d[x].size()) d[x][rs-1]|=d[rc(x)][rs-1];
sum[x]=sum[lc(x)]+sum[rc(x)];
}
void tbuild(int x,int l,int r){
sum[x]=tag[x]=0;
if(l==r) return d[x][0]=g[l],sum[x]=g[l],void();
int mid=(l+r)>>1;
tbuild(lc(x),l,mid);tbuild(rc(x),mid+1,r);
pushup(x);
}
void reset(int x,int l,int r,int ql,int qr,int val){
if(ql<=l&&r<=qr) return pushtag(x,val);
int mid=(l+r)>>1;
pushdown(x);
if(ql<=mid) reset(lc(x),l,mid,ql,qr,val);
if(qr>mid) reset(rc(x),mid+1,r,ql,qr,val);
pushup(x);
}
int query(int x,int l,int r,int ql,int qr){
if(ql<=l&&r<=qr) return sum[x];
int mid=(l+r)>>1,rt=0;
if(ql<=mid) rt+=query(lc(x),l,mid,ql,qr);
if(qr>mid) rt+=query(rc(x),mid+1,r,ql,qr);
return rt;
}
void bk(int x,int l,int r,int al){
if(l==r) return g[l]=sum[x]^al,void();
int mid=(l+r)>>1;
bk(lc(x),l,mid,al^tag[x]);bk(rc(x),mid+1,r,al^tag[x]);
}
}tr;
void init(){
for(int i=1;i<=n;i++) tra.add(i,a[i]);
tr.build(1,1,n);
for(int i=1;i<=n;i++) g[i]=a[i]^g[i-1];
tr.tbuild(1,1,n);
}
void modify(int id,int val){
return;
int w=bas.querymin(val);
tr.reset(1,1,n,id,n,w);
a[id]^=w;
tra.add(id,w);
}
void rebuild(int val){
tr.bk(1,1,n,0);
for(int i=1;i<=n;i++) g[i]=max(g[i],g[i]^val);
tr.tbuild(1,1,n);
}
void insertnum(int x){
int val=bas.insert(x);
if(!val) return;
rebuild(val);
}
int query(int ql,int qr){
int w=bas.querymin(tra.query(ql-1));
tr.reset(1,1,n,ql,qr,w);
// return 0;
int rt=tr.query(1,1,n,ql,qr);
tr.reset(1,1,n,ql,qr,w);
return rt;
}
main(){
n=read();q=read();
for(int i=1;i<=n;i++) a[i]=read();
init();
while(q--){
int op=read();
if(op==1){
int id=read(),val=read();
modify(id,val);
}else if(op==2){
insertnum(read());
}else{
int ql=read(),qr=read();
printf("%llu\n",query(ql,qr));
}
}
}
Details
Tip: Click on the bar to expand more detailed information
Subtask #1:
score: 0
Runtime Error
Test #1:
score: 0
Runtime Error
input:
2000 2000 1860495733 462603674 3739839441 759356520 47330263 550811730 2301200895 989240351 2499503801 2624225494 2123076812 1180966826 238739434 488666688 784742950 2583466952 4111371941 2335988605 2583741355 933716686 1644403538 1970423306 304500250 905101643 1814942168 1136358764 88729799 1577263...
output:
result:
Subtask #2:
score: 0
Runtime Error
Test #5:
score: 0
Runtime Error
input:
500000 100000 12261386944926786495 7846697792998647383 16622924885320463714 170129022271213944 12625257523700625864 7684671687986103560 11532026873918423068 1131776055566669037 8263146651412710501 17872572061246021001 5017109039248728310 11088626167542318645 13810119722795416818 10928315716094262229...
output:
result:
Subtask #3:
score: 0
Skipped
Dependency #2:
0%
Subtask #4:
score: 10
Accepted
Test #15:
score: 10
Accepted
time: 160ms
memory: 72388kb
input:
100000 100000 860905160 3192911636 290327446 2020707113 959258245 454185039 421895589 1070265496 2218913641 1684685660 1206723673 2606734467 4247254571 3341954386 3805299640 1702270353 2472053741 2816060613 1307901348 2702949728 879391505 884661815 330738731 1575749344 1239158446 2099693858 67466644...
output:
208755389215975 125497785366837 162446748431411 63166834945113 33018804920229 89343160639243 36805816758195 40790494641758 13928126471189 267168502433672 191989403472418 276350936750564 11189666657474 133862444125402 92684260245650 179275392898572 46159208957881 232612971657325 184946588056252 11022...
result:
ok 49937 lines
Test #16:
score: 0
Accepted
time: 166ms
memory: 75332kb
input:
100000 100000 3000426759 1824979832 10575943 1641880522 143940604 1261846884 1440252673 1935901636 2652482829 470200294 2760667036 1220768939 3242608584 30882643 3358811662 1954487430 4180122469 4037250966 1441428251 65645189 4256227499 2434976018 1044356540 1620226231 1790468792 103643592 177914654...
output:
145524055862860 161441138955842 306257129346343 299241569554302 226683771328975 181478349880992 130902872439424 280739831883457 4613950888066 230458529036600 79448487784419 221626929814178 372553919558010 197240289390578 161723969896905 318321608389202 174341260990323 316468299413037 71567183240652 ...
result:
ok 49939 lines
Test #17:
score: 0
Accepted
time: 164ms
memory: 70812kb
input:
100000 100000 498518053 2395903916 3150345345 970832874 3209063924 918965752 719268408 671515184 3219866836 2211624912 4145355509 2996354339 4177997608 3629522427 1213935750 2323829632 3165425771 298491930 908110837 335150507 2730640728 1723129376 652211552 542768976 2794794671 3614541766 2502995608...
output:
260888209253328 220417527912855 82382666528415 205546503607350 135868918784651 83987999793156 230878751182064 61087943195861 228413465926535 283578798581409 21723069972011 139237220178662 110232569033326 176416307293587 344477122018860 268362176646883 115160165700192 374561042493460 322099679993279 ...
result:
ok 50165 lines
Test #18:
score: 0
Accepted
time: 165ms
memory: 70744kb
input:
100000 100000 3992377736 434272953 2992624759 2250120461 2826429649 1076646810 1973468088 793827622 2495303276 3051008910 461259433 807863154 899742425 2917748831 3777743530 2401888492 375547402 445106376 3978593719 1459330010 3512989180 138941241 257638089 2598569114 2184509605 2499713476 239125335...
output:
147448496111215 217893531933388 149751201282482 207237624790060 236297842537499 215103721410855 77304922769081 222323379784810 186478109354540 112876203505747 179420115108834 150190314932342 43670232007873 25887688561684 46014605520682 21167146272975 216254665421226 136814646622945 4186313114826 229...
result:
ok 50066 lines
Test #19:
score: 0
Accepted
time: 159ms
memory: 70480kb
input:
100000 100000 3179037198 1726433634 1170347124 1038182581 976465227 3428516821 2779258891 2172100746 2976741309 804773686 1819799408 2161144533 271279535 375735337 1495976758 1446095086 783591841 647495961 2978211107 4184592567 2538879833 1516802478 3667793825 3117167846 1421032731 399321258 2739042...
output:
14881117655388 285727776113744 96063693786679 42810374617026 288595074947863 280315397686375 289641204087564 112743323666062 186419939913803 111073514966384 130685514549648 254506212148884 101643204416767 253148324245449 95367927417 281948636745321 193523757014667 134607728490831 291309237374936 238...
result:
ok 50035 lines
Test #20:
score: 0
Accepted
time: 183ms
memory: 71956kb
input:
100000 100000 2837558084 270944129 1488717152 2392454072 470770792 2777133 722770864 3585689195 590024623 3488355822 17552172 1874212154 4168915873 1921182598 4147474167 2573985631 3517994287 748095291 1037232836 3370419592 1671928653 4030684268 641958463 1580906861 2996601090 3022839831 4219465735 ...
output:
48146023505073 199293116412251 16853038897970 261946024338866 293982581313722 20413002833952 275337254322097 23734082669358 304448299364826 207480800390891 209702100347470 107059294321865 67809987007145 31022679709752 231784403945102 191992113958559 71931140153873 318909802436554 308235637561914 480...
result:
ok 50340 lines
Test #21:
score: 0
Accepted
time: 180ms
memory: 70376kb
input:
100000 100000 364926614 1655853438 3186329604 2743661979 2747155766 1720061739 2439752943 937515084 2541570348 1831323174 2685307250 345381411 2570490374 1411159104 3124296940 1010675903 916623261 3920607778 1055185260 3605823397 3735681762 875120207 184660308 3070923245 4194650139 390860276 3773763...
output:
212343579500935 145743539929651 81469645915718 179691739954130 40183110135676 187234010931784 221570315189145 151009623141265 87859127080109 119598166244021 219492663052409 11708497011473 93783594707846 3576360455299 302012818573840 296265045459927 161349572929071 8052465444694 313371100072835 29316...
result:
ok 50029 lines
Subtask #5:
score: 15
Accepted
Dependency #4:
100%
Accepted
Test #22:
score: 15
Accepted
time: 908ms
memory: 119744kb
input:
500000 100000 17875507896876852594 1231709150845899221 4118660995540143087 2819399476387881514 10658483116489758483 1552311792717328959 14473006677868328329 994640445028619787 3867235579009926064 13154180381468776383 13818624943002555745 15236156474893022124 8540629523994518030 18015042213820785602 ...
output:
10869073095452935323 4937957831895612347 8597855937100549826 4077084800767531060 13112867824279445332 5105048791714899665 17718481205510838851 12074525849086176152 6525859617975446449 2082310637126089892 9399666547046514786 16816388302879441034 17588209628777971111 1847567427746727327 84872524510475...
result:
ok 70107 lines
Test #23:
score: 0
Accepted
time: 840ms
memory: 119572kb
input:
500000 100000 6828563799520766832 11515447725463433357 4213361436581012296 14031509507844449080 18249350756425840257 14493464624196315891 12415353987799675259 3703518334954255750 4266999120277854395 2123906362579612413 17103645264156625121 868592593649693355 4847597470533408785 14928214799181722193 ...
output:
6363207400557355934 16288587521888302146 1361210770857458479 6006502423410041422 1894019513072482417 14248295997922705772 8064442524532044978 10334899933601692633 12106162850301406999 2606668196529207339 4856479168837322410 16130549753218915787 8369375673683353999 11960617093535783425 15335845342931...
result:
ok 69984 lines
Test #24:
score: 0
Accepted
time: 845ms
memory: 119572kb
input:
500000 100000 14198682046881575150 7635334914821046992 11389675623227281511 1045330102309314354 4477471256340822897 3696344835826529029 11012026304650499483 4070005863426809287 18432667943863789076 17714465262263247362 13722376735829845591 11260506457882029888 1125626824640054202 1586767928151162562...
output:
12350154146157749738 9499239460231923308 18008851620635921682 148912554601495328 4115795349268194524 12605459555055165950 550647900683109713 7357757359427056966 7660633085143943029 9809585154915143642 15985981299309707278 1403155144632879460 18120067489594311114 12676834216764393974 3938553162498976...
result:
ok 70210 lines
Test #25:
score: 0
Accepted
time: 854ms
memory: 117464kb
input:
500000 100000 8109118722891377363 8625796976710528897 2086756925655538736 14031941517388678623 9566990103352120207 11223174774828522391 17735729615572009894 16028767305881977199 11106802969673527177 6794119173198417921 8779981617229506127 4362954345618005800 11871427666173905956 16869518584374181569...
output:
17797484341282335358 14656108334517767307 18239833590597022946 17473264990559401704 135386923372493820 8351390069945505451 150764445692732169 8269673897825015763 12549453920961509475 4739078826518314002 1329453889611388519 13352331023993735132 2860397044864194755 13668416582239928999 279813923174677...
result:
ok 70020 lines
Test #26:
score: 0
Accepted
time: 847ms
memory: 117768kb
input:
500000 100000 11547618364843841696 2162314575518490131 1972025274771278149 16812349264107617944 9442419692144248790 18127508959806768026 17148987336480653479 3333804899478593331 3808121926120409026 3675243260407399172 14040862985762786478 15059230413544253592 8393219093948433433 10220191434165236352...
output:
15796154535647903422 12670054828850766969 17875211718493730687 17328332268399163461 16308427466325507070 14962463015578890413 14337015266336228459 11626505821946439085 13376340680348933250 5628455301208164244 13678768092264718955 3856168718255841097 6545542831101741207 3675910062648688840 6270164039...
result:
ok 69892 lines
Test #27:
score: 0
Accepted
time: 847ms
memory: 119544kb
input:
500000 100000 8572795707712611829 8910365458469131230 7358499818118647372 15814365187281769780 13626945416126821598 6666786444954922267 2026782268744334328 11938215712406426920 1788287362152792612 18337030751462457410 17186210395509408749 13907194960601627210 17021568173000653839 1470469443105723025...
output:
1327458367448872694 6247856700576240849 11059028305723737632 12339311013678639709 3489664024175453391 16485691479330809774 16807967981777695842 9057333845436631250 4325991720600902497 16354407328574144972 3369490586659684306 13805278651976664848 1859484914135885882 5989232132602439314 68345873687208...
result:
ok 70119 lines
Subtask #6:
score: 0
Skipped
Dependency #1:
0%
Subtask #7:
score: 0
Skipped
Dependency #1:
0%