QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#269091 | #7765. Xor Master | songziyan | 35 | 457ms | 114944kb | C++14 | 3.7kb | 2023-11-29 12:15:36 | 2023-11-29 12:15:37 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define gc getchar
// char buf[1<<22],*p1,*p2;
// #define gc() (p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<22,stdin),p1==p2)?0:*p1++)
inline int read(){
int x=0,f=1;char ch=gc();
while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=gc();}
while(ch>='0'&&ch<='9')x=(x<<3)+(x<<1)+ch-48,ch=gc();
return x*f;
}
#define rd read()
#define pb push_back
#define mk make_pair
#define pii pair<int,int>
#define ull unsigned long long
const int N=5e5+5;
int n,q,a[N],g[N];
struct basis{
ull s[70];
ull insert(ull x){
for(int i=63;i>=0;i--)if((x>>i)&1){
if(!s[i]){
for(int j=i-1;j>=0;j--)
if((x>>j)&1)x^=s[j];
s[i]=x;
for(int j=63;j>i;j--)
if((s[j]>>i)&1)s[j]^=x;
return x;
}
x^=s[i];
}
return 0;
}
ull qrymin(ull x){
for(int i=63;i>=0;i--)x=min(x,x^s[i]);
return x;
}
ull qrymax(ull x){
for(int i=63;i>=0;i--)x=max(x,x^s[i]);
return x;
}
}bas;
struct bit{
ull a[N];
void add(int x,ull v){
for(;x<=n;x+=(x&(-x)))
a[x]^=v;
}
ull sum(int x){
ull res=0;
for(;x;x-=(x&(-x)))
res^=a[x];
return res;
}
void init(){
memset(a,0,sizeof(a));
}
}c;
struct tree{
#define lc x<<1
#define rc x<<1|1
ull tmp[N<<4],*p=tmp;
ull *tr[N<<2],tag[N<<2],sum[N<<2];
int tot[N<<2],len[N<<2];
void pushup(int x){
ull k=0;
for(int i=0;i<tot[x];i++){
tr[x][i]=tr[lc][i]^tr[rc][i]^k;
k=(tr[lc][i]&tr[rc][i])|(tr[lc][i]&k)|(tr[rc][i]&k);
}
sum[x]=sum[lc]+sum[rc];
}
void addtag(int x,ull v){
tag[x]^=v;
sum[x]=0;
ull k=0;
for(int i=0;i<tot[x];i++){
ull t=k;
if((len[x]>>i)&1){
k=k&(tr[x][i]&v);
tr[x][i]=tr[x][i]^t^v;
}else{
k=k|(tr[x][i]&v);
tr[x][i]=tr[x][i]^t;
}
sum[x]+=(tr[x][i]<<i);
}
}
void pushdown(int x){
if(tag[x]){
addtag(lc,tag[x]);
addtag(rc,tag[x]);
tag[x]=0;
}
}
void build(int x,int l,int r){
tag[x]=0;
len[x]=r-l+1;
while((1<<tot[x])<=(r-l+1))++tot[x];
tr[x]=p;p+=tot[x]+5;
if(l==r){
tr[x][0]=sum[x]=bas.qrymax(g[l]);
return;
}
int mid=(l+r)>>1;
build(lc,l,mid);
build(rc,mid+1,r);
pushup(x);
}
void upd(int x,int l,int r,int ql,int qr,ull v){
if(ql<=l&&r<=qr)return addtag(x,v);
pushdown(x);
int mid=(l+r)>>1;
if(ql<=mid)upd(lc,l,mid,ql,qr,v);
if(qr>mid)upd(rc,mid+1,r,ql,qr,v);
pushup(x);
}
ull qry(int x,int l,int r,int ql,int qr){
if(ql<=l&&r<=qr)return sum[x];
pushdown(x);
int mid=(l+r)>>1;
ull res=0;
if(ql<=mid)res+=qry(lc,l,mid,ql,qr);
if(qr>mid)res+=qry(rc,mid+1,r,ql,qr);
return res;
}
void rbuild(int x,int l,int r){
tag[x]=0;
if(l==r){
tr[x][0]=sum[x]=bas.qrymax(g[l]);
return;
}
int mid=(l+r)>>1;
rbuild(lc,l,mid);
rbuild(rc,mid+1,r);
pushup(x);
}
}T;
void init(){
scanf("%lld%lld",&n,&q);
for(int i=1;i<=n;i++)
scanf("%lld",&a[i]);
for(int i=1;i<=n;i++){
g[i]=g[i-1]^a[i];
c.add(i,a[i]);
}
T.build(1,1,n);
}
void opt1(int x,ull v){
a[x]^=v;
c.add(x,v);
T.upd(1,1,n,x,n,bas.qrymin(v));
}
void opt2(ull v){
if(bas.insert(v)){
c.init();
for(int i=1;i<=n;i++){
g[i]=g[i-1]^a[i];
c.add(i,a[i]);
}
T.rbuild(1,1,n);
}
}
ull opt3(int ql,int qr){
ull pre=c.sum(ql-1);
ull v=bas.qrymin(pre);
T.upd(1,1,n,ql,qr,v);
ull ans=T.qry(1,1,n,ql,qr);
T.upd(1,1,n,ql,qr,v);
return ans;
}
signed main(){
init();
while(q--){
int op,x,l,r;ull v;
scanf("%lld",&op);
if(op==1){
scanf("%lld%llu",&x,&v);
opt1(x,v);
}
if(op==2){
scanf("%llu",&x);
opt2(x);
}
if(op==3){
scanf("%lld%lld",&l,&r);
printf("%llu\n",opt3(l,r));
}
}
return 0;
}
/*
*/
Details
Tip: Click on the bar to expand more detailed information
Subtask #1:
score: 10
Accepted
Test #1:
score: 10
Accepted
time: 0ms
memory: 20048kb
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:
867006634793 3418049036989 1658469159497 794670034691 239792547603 1587489101990 592222190840 1343829229567 971235609706 571701308760 1219913933321 588622962923 2129364200509 1007100395808 3134493164996 3145027621038 2599298085956 1729302186341 837940435945 242569415869 2908005634977 1692554597386 1...
result:
ok 1001 lines
Test #2:
score: 0
Accepted
time: 3ms
memory: 19140kb
input:
2000 2000 836488286 497338588 1858847699 3099907357 1601878363 409027819 646677017 3314413779 3312383261 4245381929 661740170 2016795844 1226219370 1347593623 4008424282 2941543248 1331853899 3217984002 3651447350 1223595274 1733763258 2829453991 3934056384 2556266950 326379115 3240694642 2405972228...
output:
1042755994488 3566460727022 4896344756993 181148455339 5392308096517 128329799686 3895218239827 646945360393 2802192775672 4115818631146 377318752396 3776679332329 1298148822697 1295992748696 1351097540228 3413899110602 2303816407066 1713972222254 3490230048186 359123029421 2753519321710 37163510035...
result:
ok 987 lines
Test #3:
score: 0
Accepted
time: 0ms
memory: 19880kb
input:
2000 2000 934565373 583361217 1928523866 3968138916 58091196 1055428888 754057714 2583245062 1561553117 3803231337 1941815547 3183481079 4033721998 1961504708 1274020496 1413365247 4225380350 910888832 2085306570 4120303112 2310986051 3150392885 1863228247 2487640801 2753501595 1392599097 2663527219...
output:
3557365099431 1521170947970 1408454872311 2097066041438 1547787649380 1699033926121 731607397173 1512504400312 2238024031105 1226691488018 2720868465776 16740827185 1239458195766 34177580110 723038300762 89948012428 1059039811258 999014326614 20524953249 2755015662939 3285388608412 1592295267345 593...
result:
ok 1024 lines
Test #4:
score: 0
Accepted
time: 3ms
memory: 19036kb
input:
2000 2000 3045151729 428960501 1820713794 2282572198 2207348805 3422275025 782655334 2676169210 3422244596 3935592456 3633929583 3812985947 3297835714 1994436805 1574888855 3231965757 2375331974 982931142 234068847 2950645216 1927175875 202726997 3573353370 148578451 1270283373 2390862707 3593433616...
output:
445704627329 4223618535024 2450863577199 179382947501 2163925703050 2473211169137 1406440975573 1486681378298 5485708409222 3247499164866 170969938085 1264328439756 3972780905954 5127064167621 3233154054862 2628294443523 3887884373918 3201286978615 4072438879416 4508920381717 2500182546199 147588087...
result:
ok 975 lines
Subtask #2:
score: 0
Wrong Answer
Test #5:
score: 0
Wrong Answer
time: 457ms
memory: 114944kb
input:
500000 100000 12261386944926786495 7846697792998647383 16622924885320463714 170129022271213944 12625257523700625864 7684671687986103560 11532026873918423068 1131776055566669037 8263146651412710501 17872572061246021001 5017109039248728310 11088626167542318645 13810119722795416818 10928315716094262229...
output:
2573207939661104614 7447666009192553033 9779360789294725385 291594641733619148 12651979241852223476 16767496976910750877 13250008599705334330 13487799618926274398 107423558223942564 16344198613962072308 17948403443359552676 11454607925772528462 4277652212549248939 18179683167113779257 13156958286873...
result:
wrong answer 1st lines differ - expected: '12337138966997790840', found: '2573207939661104614'
Subtask #3:
score: 0
Skipped
Dependency #2:
0%
Subtask #4:
score: 10
Accepted
Test #15:
score: 10
Accepted
time: 279ms
memory: 40748kb
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: 285ms
memory: 42720kb
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: 274ms
memory: 40552kb
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: 288ms
memory: 46352kb
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: 283ms
memory: 40604kb
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: 282ms
memory: 46484kb
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: 275ms
memory: 40736kb
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: 0
Time Limit Exceeded
Dependency #4:
100%
Accepted
Test #22:
score: 0
Time Limit Exceeded
input:
500000 100000 17875507896876852594 1231709150845899221 4118660995540143087 2819399476387881514 10658483116489758483 1552311792717328959 14473006677868328329 994640445028619787 3867235579009926064 13154180381468776383 13818624943002555745 15236156474893022124 8540629523994518030 18015042213820785602 ...
output:
6078461407699748267 9866316191970129587 5040149749171011072 4400441303494323209 5231805523826817295 11950613354564934315 7402900579135946072 12915500348295745282 14567795447626533402 10902500211786281172 8221672433201306161 13453207024410460192 5456551460782638874 6313834917561571077 191960453359614...
result:
Subtask #6:
score: 15
Accepted
Dependency #1:
100%
Accepted
Dependency #4:
100%
Accepted
Test #28:
score: 15
Accepted
time: 368ms
memory: 42716kb
input:
100000 100000 1246217479 2497476349 1583301214 3092195131 1122763035 3685427378 3759274674 2212252942 3411779388 1407177641 3728104468 2189005231 2284116456 4163693736 2268105236 3484999142 3179046583 126949827 1675745535 2063659275 3494152722 1162732726 818211479 529059683 832000919 541445158 20214...
output:
21118991183514 49768407513437 16283715327990 30300194886183 130226443936196 9963088487267 94359773501533 31212763209891 114669734539010 25987252046404 255638314480251 18480623837996 234730518803626 270385386179776 21288562167432 17771165511946 187066248697012 130055797757555 125671783821257 23982825...
result:
ok 50101 lines
Test #29:
score: 0
Accepted
time: 374ms
memory: 40672kb
input:
100000 100000 3380337390 2192430571 3933141321 1706903255 3085584046 364516347 2425287008 1549183778 3686539564 1609701825 2595512339 848597460 1080247571 1440756576 4112617606 1493883089 3178527995 610654296 187250248 2215111121 2513751863 1684788997 4097277857 1049780030 4212347537 3668954665 3486...
output:
54323454263310 71339374598068 46411473511877 144561118507886 19738490447747 110795216789346 135004561218424 59589901402728 56854336569680 128065140738606 95290990082477 7235761555026 109457529067159 26183288815684 41014299183870 36884130852204 39288107092223 13998818101262 125372277580842 1110562686...
result:
ok 50078 lines
Test #30:
score: 0
Accepted
time: 389ms
memory: 42724kb
input:
100000 100000 1862149178 2962074843 1330526775 114187744 3977226056 2509530716 162340628 3301195541 788965249 1440676566 3566763854 815977044 2888291255 1350872051 861162301 3375712331 873626884 1011954995 3629866849 3358908386 162093220 2909629133 620314255 8113190 2582251658 2150044798 1873954001 ...
output:
85772468730962 71453720920005 124511057629011 89473560676821 38597892188646 114883116582024 24199209958416 92669558648075 79814453738490 255696579390266 83405667879310 151754284978973 2166831221785 79916355490308 72351238238023 190479989618534 8767991978946 36583940540515 175487673751147 14245990295...
result:
ok 49927 lines
Test #31:
score: 0
Accepted
time: 369ms
memory: 46348kb
input:
100000 100000 3211125529 1626371133 2357399633 584514017 2968148202 2325332282 720312879 338458680 2498792694 1618436251 1967218344 2787111672 1258458652 814516665 3486148949 2161652862 327111538 2872987132 3981725374 2863371389 3562676547 4036809139 2014534480 2970419066 3633082981 3826785666 11102...
output:
21916012971797 57475963159759 18917277848585 36544202300373 57685995751960 90976230857444 80822767299749 17847404154595 95589042749360 6586620619308 79111125156023 59588884422560 59716008106375 2572165546114 54782393460565 31162454989416 10092716264218 3327025065877 111586952555749 156487810031951 3...
result:
ok 49854 lines
Test #32:
score: 0
Accepted
time: 369ms
memory: 42584kb
input:
100000 100000 3507743084 660284889 2961272890 953083732 2375183832 346116907 1850861150 323918273 3181391543 2390274144 2407856811 2540221501 3771889935 876874809 568377926 700786669 919796866 648807141 1560110003 2180087505 2058689060 1344580841 1423137647 599047683 3498931868 2179392878 2431046984...
output:
75942989677659 36268755310759 50800970504099 64138668626791 58244406342622 165517187274482 90756726004945 83138941905843 87142397947776 46823630691796 106461617612117 53834134276094 109540928312244 25652977659723 209271011588828 95507563809390 165269626724840 23381043134417 6648606542702 59847743386...
result:
ok 49979 lines
Test #33:
score: 0
Accepted
time: 367ms
memory: 40684kb
input:
100000 100000 2751314064 2437407608 1671280345 1958196000 1426783616 2943348618 805215153 4164043265 2847100368 2880604511 1771050965 2028139705 3361789084 3749355641 2077528593 2382301155 555581726 851318953 557256830 2763026486 376496282 3233060402 2128912810 634726381 909180601 580639709 23804559...
output:
83946612901832 1805718830219 77273878894653 189002723407848 32988711046723 12223153629383 73686301632989 61134278102059 17328563989750 93548779783234 133013942910181 41249223212337 635032243078 96609880436731 86578943454705 218896501258871 95562289914840 65532825212488 53267272627438 59013459741690 ...
result:
ok 50089 lines
Test #34:
score: 0
Accepted
time: 374ms
memory: 42712kb
input:
100000 100000 1976807363 4064781095 2912734006 1521250810 2278672058 776995509 3689783031 174122858 2744437736 1728530766 4177928839 3876672776 3444409112 2565328232 407306426 3819227021 3951077659 741756745 3103783329 1306029375 561660630 771670678 1397878035 178028688 2891866360 2602835896 8648691...
output:
37340885836776 83971333453 85778368404551 91006809497560 63808569143516 56368148042176 82193112956771 281691154062119 105712881581197 70529512367564 140802497171550 168130231434149 22351052830603 51163203192374 28239281870208 97558181474479 78286234180952 24352144200331 61338028505968 30281802401994...
result:
ok 50220 lines
Test #35:
score: 0
Accepted
time: 380ms
memory: 45312kb
input:
100000 100000 4239893133 424739368 3728706530 2115568708 281958194 662541717 1325698425 1557053765 3782102867 3124132553 2428884865 3879476006 3608258428 3836799989 4126815311 4273579426 3843362793 221562024 302787484 1354589715 3907060892 1394079646 3576743001 3065395887 1793531599 2855590516 35837...
output:
91954925939195 47189057991907 20139721566862 73217364208130 76082965633668 86370192706881 118255730800222 49306406221180 94174537691532 35308508573138 25020947807550 29526784396087 70364346946303 15790009087007 127536571008864 10856179900621 115570189658596 29819204091761 264487748652484 15507193256...
result:
ok 50000 lines
Subtask #7:
score: 0
Skipped
Dependency #1:
100%
Accepted
Dependency #2:
0%