QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#370582 | #8322. 魔法手杖 | littlecat | 24 | 494ms | 9296kb | C++14 | 4.1kb | 2024-03-29 12:01:57 | 2024-03-29 12:01:58 |
Judging History
answer
#pragma GCC optimize("O3")
#include <iostream>
#include <algorithm>
using namespace std;
const int mx=100000;
typedef long long ll; typedef __int128 I;
//128io
void read(__int128 &x){
// read a __int128 variable
char c; bool f = 0;
while(((c = getchar()) < '0' || c > '9') && c != '-');
if(c == '-'){f = 1; c = getchar();}
x = c - '0';
while((c = getchar()) >= '0' && c <= '9')x = x * 10 + c - '0';
if(f) x = -x;
}
void write(__int128 x){
// print a __int128 variable
if(x < 0){putchar('-'); x = -x;}
if(x > 9)write(x / 10);
putchar(x % 10 + '0');
}
I a[mx]; ll b[mx+1]; pair<I,ll> tmp[mx]; //b prefsums
I f1(int,int,int,ll);
I f2(int,int,int,ll,I);
I f3(int,int,int,ll,I);
I f4(int,int,int,ll);
I f1(int l, int r, int t, ll B)
{
// for(int i=0; i<9-t; i++) cerr<<'|'<<' ';
// cerr<<"1\t\tl="<<l<<" r="<<r<<" t="<<t<<" B="<<B<<'\n';
if(t==-1) return 0;
//add all
if(b[r]-b[l]<=B) return (a[l]&((I(1)<<(t+1))-1))+(I(1)<<(t+1))-1;
int L=l-1, R=r;
while(R!=L+1) if((a[(L+R)/2]>>t)&1) R=(L+R)/2; else L=(L+R)/2;
int m=R;
if(l==m) return f1(l,r,t-1,B)+(I(1)<<t);
bool b1=b[r]-b[m]<=B;
if(b[m]-b[l]>B)
{
//!b0&&b1: x gets 1, 1s add, discard
if(b1) return f1(l,m,t-1,B-(b[r]-b[m]))+(I(1)<<t);
//neither: if x gets 0, discard 1s
//if x gets 1, discard 0s, 1s add=del
return max(f1(l,m,t-1,B),f4(m,r,t-1,B));
}
//have b0 so can achieve 2^t-1
I ans = (I(1)<<t)-1;
//if x gets 0, 0s add; assuming no actual 0
I n1=a[l]&((I(1)<<(t+1))-1);
if(n1) ans = f2(m,r,t-1,B-(b[m]-b[l]),(I(1)<<t)-n1)+(I(1)<<t);
//if b1, can do !b0&&b1
if(b1) ans = max(ans,f1(l,m,t-1,B-(b[r]-b[m]))+(I(1)<<t));
return ans;
}
I f2(int l, int r, int t, ll B, I c)
{
// for(int i=0; i<9-t; i++) cerr<<'|'<<' ';
// cerr<<"2\t\tl="<<l<<" r="<<r<<" t="<<t<<" B="<<B<<" c="<<ll(c)<<'\n';
//same problem with additional term x-c (0<=c<2^(t+1))
//implicit add := delete
if(t==-1) return 0; if(l==r) return (I(1)<<(t+1))-1-c;
int L=l-1, R=r;
while(R!=L+1) if((a[(L+R)/2]>>t)&1) R=(L+R)/2; else L=(L+R)/2;
int m=R;
//c has 1: x gets 1, delete 0s
if((c>>t)&1) return f2(m,r,t-1,B,c-(I(1)<<t));
//if can add for all 1s: x gets 1
if(b[r]-b[m]<=B) return f2(l,m,t-1,B-(b[r]-b[m]),c)+(I(1)<<t);
//if x gets 0: discard 1s
//if x gets 1: discard 0s, now x+c and add := delete
return max(f2(l,m,t-1,B,c),f3(m,r,t-1,B,(I(1)<<t)-c));
}
I f4(int l, int r, int t, ll B)
{
// for(int i=0; i<9-t; i++) cerr<<'|'<<' ';
// cerr<<"4\t\tl="<<l<<" r="<<r<<" t="<<t<<" B="<<B<<'\n';
//same problem but add := delete; guaranteed cannot delete all
if(t==-1) return 0;
int L=l-1, R=r;
while(R!=L+1) if((a[(L+R)/2]>>t)&1) R=(L+R)/2; else L=(L+R)/2;
int m=R;
//delete one group
if(b[m]-b[l]<=B) return f4(m,r,t-1,B-(b[m]-b[l]))+(I(1)<<t);
if(b[r]-b[m]<=B) return f4(l,m,t-1,B-(b[r]-b[m]))+(I(1)<<t);
//neither
return max(f4(l,m,t-1,B),f4(m,r,t-1,B));
}
I f3(int l, int r, int t, ll B, I c)
{
// for(int i=0; i<9-t; i++) cerr<<'|'<<' ';
// cerr<<"3\t\tl="<<l<<" r="<<r<<" t="<<t<<" B="<<B<<" c="<<ll(c)<<'\n';
//same problem but add := delete; guaranteed cannot delete all
//also one additional term x+c (0<=c<=2^(t+1))
if(t==-1) return 0; if(b[r]-b[l]<=B) return (I(1)<<(t+1))-1+c;
int L=l-1, R=r;
while(R!=L+1) if((a[(L+R)/2]>>t)&1) R=(L+R)/2; else L=(L+R)/2;
int m=R;
//delete one group
if(b[m]-b[l]<=B) return f3(m,r,t-1,B-(b[m]-b[l]),c)+(I(1)<<t);
if(b[r]-b[m]<=B) return f3(l,m,t-1,B-(b[r]-b[m]),c)+(I(1)<<t);
//neither
return max(f3(l,m,t-1,B,c),f3(m,r,t-1,B,c));
}
I solve()
{
int n, k; ll m; cin>>n>>m>>k;
//compute answer starting with highest bit
//also solve problem with extra term x-c
for(int i=0; i<n; i++) read(tmp[i].first);
for(int i=0; i<n; i++) cin>>tmp[i].second;
sort(tmp,tmp+n);
for(int i=0; i<n; i++) a[i]=tmp[i].first, b[i+1]=b[i]+tmp[i].second;
return f1(0,n,k-1,m);
}
int main()
{
int T; cin>>T>>T; while(T--) write(solve()), cout<<'\n';
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 4
Accepted
time: 0ms
memory: 5856kb
input:
1 2 1 1 10 69 0 9 1000000000 10 244 710 380 144 439 863 870 166 346 495676227 842003627 148079269 750582321 584950601 767126829 909307499 254106473 942938842
output:
1092 479
result:
ok 2 lines
Test #2:
score: 4
Accepted
time: 1ms
memory: 5644kb
input:
2 2 1 1 10 523 0 9 1000000000 10 848 862 206 186 563 318 692 557 937 922116005 577545690 363781833 81032507 443868714 352716275 50542823 305806582 28805127
output:
1546 681
result:
ok 2 lines
Test #3:
score: 4
Accepted
time: 1ms
memory: 5876kb
input:
3 2 1 1 10 98 0 9 1000000000 10 329 357 633 469 110 721 457 238 51 40948203 144541423 719902898 403414385 625735025 473335146 107749900 238792543 449945390
output:
1121 511
result:
ok 2 lines
Test #4:
score: 4
Accepted
time: 114ms
memory: 9036kb
input:
4 5 100000 0 30 76630934 108936482 130420626 131855744 105346843 128458246 108243259 68059982 126654362 129080907 113416035 106976866 67840827 131702105 31856035 114313339 128664146 83795983 89307173 119627353 87072570 90008429 101830816 86771207 109365348 78483596 96660700 94183829 84341841 6114378...
output:
939540479 1073610765 1073641824 939540479 1073610766
result:
ok 5 lines
Test #5:
score: 4
Accepted
time: 114ms
memory: 9272kb
input:
5 5 100000 0 30 76630412 108936989 130419821 131855908 105346921 128458123 108243250 68060024 126653456 129080620 113415939 106976648 67840659 131702589 31855988 114313916 128664271 83796359 89307559 119627595 87072119 90007889 101830798 86770759 109365415 78484075 96661493 94184047 84342493 6114315...
output:
939540479 1073610765 1073641824 939540479 1073610766
result:
ok 5 lines
Test #6:
score: 4
Accepted
time: 114ms
memory: 8984kb
input:
6 5 100000 0 30 76630333 108936734 130420608 131855493 105346592 128458438 108243159 68059640 126653892 129080993 113415838 106976338 67840970 131701923 31855999 114313236 128664302 83796315 89307977 119627172 87072644 90007888 101831307 86771011 109365285 78483904 96661399 94183858 84341903 6114386...
output:
939540479 1073610765 1073641824 939540479 1073610766
result:
ok 5 lines
Test #7:
score: 0
Wrong Answer
time: 247ms
memory: 5580kb
input:
7 250000 2 1 16 40654 60936 1 2 2 1 5 29 18 1 2 2 1 9 367 278 1 2 2 1 6 32 40 1 2 2 1 28 211414711 120442951 1 2 2 1 9 440 62 1 2 2 1 2 2 2 1 2 2 1 6 60 1 1 2 2 1 1 0 0 1 2 2 1 16 39195 9530 1 2 2 1 19 260304 52003 1 2 2 1 12 1492 2878 1 2 2 1 22 2112709 2056045 1 2 2 1 30 840827142 778131799 1 2 2 ...
output:
55295 31 511 55 268435455 511 3 63 1 65535 524287 3327 4194303 1073741823 1008 268435455 1073741823 31 12582911 9094075 262143 31 131071 262143 4496 31091473 1 16777215 0 536870911 1015807 255 46137343 87 7 1023 5242879 528998770 3 246803 1 1 16383 2047 8388607 63 16252927 63 3972053 62463 25564183 ...
result:
wrong answer 19th lines differ - expected: '11702391', found: '12582911'
Test #8:
score: 0
Wrong Answer
time: 219ms
memory: 3540kb
input:
8 250000 2 1 24 7245747 7751903 1 2 2 1 18 7301 21614 1 2 2 1 2 1 3 1 2 2 1 3 0 4 1 2 2 1 22 1946046 3459042 1 2 2 1 1 0 1 1 2 2 1 27 110608129 62075905 1 2 2 1 7 79 78 1 2 2 1 1 0 0 1 2 2 1 8 190 156 1 2 2 1 29 213608577 61390223 1 2 2 1 21 194242 1613306 1 2 2 1 8 46 195 1 2 2 1 12 2674 3172 1 2 2...
output:
16515071 253060 2 3 3145727 0 134217727 127 1 255 536870911 1242817 173 3697 1 95 491519 131071 131071 2097151 58720255 4194303 1793 47 3670015 2047 14 8388607 7 65535 13141 324155 1 30 2047 2047 16383 255 268435455 7 1983 33538047 32739558 1 15 34 60404 2097151 2047 14115520 127 7864319 63 3 511 26...
result:
wrong answer 16th lines differ - expected: '92', found: '95'
Test #9:
score: 0
Wrong Answer
time: 113ms
memory: 9216kb
input:
9 40003 100000 1 30 76630623 108936745 130419844 131856358 105346889 128458736 108243812 68059447 126654184 129080977 113416077 106976936 67840619 131702296 31855896 114313546 128664506 83796193 89307481 119627719 87072176 90007912 101831608 86771305 109366220 78484119 96661356 94183598 84341931 611...
output:
939540479 1073610765 1073641824 3005 536870911 3255 992 4194303 469762047 32243711 22429 3071 1791 11 28671 127 1048575 4194303 0 3 4194303 65535 41943039 939524095 16777215 87 7717 849298282 268435455 402653183 7 3670015 65535 524287 4194303 196607 31 1023 8389241 148759809 100663295 125426 178412 ...
result:
wrong answer 14th lines differ - expected: '10', found: '11'
Test #10:
score: 0
Wrong Answer
time: 122ms
memory: 9036kb
input:
10 40003 100000 1 30 76630457 108937083 130420232 131855828 105346260 128458262 108242996 68059167 126653670 129080772 113416051 106976793 67840568 131702468 31855850 114313412 128664110 83796459 89307450 119627418 87071762 90007680 101831024 86771509 109365868 78483555 96661066 94183460 84342625 61...
output:
939540479 1073610765 1073641824 119200937 1048575 67108863 6300883 33554431 383 4095 31 100663295 1023 75124094 33554431 6557 65535 3071 20334 2830 30 24575 511 98303 1048575 29 134217727 524287 49399 57202 8323071 95 524287 1187963 65535 2 536870911 31 207916 7 255 262930431 5 360447 63 1151 255 0 ...
result:
wrong answer 31st lines differ - expected: '8302663', found: '8323071'
Test #11:
score: 0
Wrong Answer
time: 106ms
memory: 9236kb
input:
11 40003 100000 1 30 76630674 108936653 130420433 131856265 105346983 128458653 108243409 68059656 126653505 129080757 113415755 106976914 67840002 131701979 31855773 114313774 128664187 83796634 89307850 119627507 87071827 90007813 101831495 86771399 109365557 78483822 96660811 94184023 84342680 61...
output:
939540479 1073610767 1073641825 31 63 2720 33554431 1 32767 7 2097151 1294335 895 67108863 127 6291455 1048575 234881023 4194303 4194303 1 14335 7 134217727 31 8126463 1073741823 5 4194303 32505855 7 7 255 753663 5 415236095 31 126847731 31498 1 8388607 33554431 16383 127 4194303 1073741823 46 58720...
result:
wrong answer 16th lines differ - expected: '5705018', found: '6291455'
Test #12:
score: 0
Wrong Answer
time: 104ms
memory: 9280kb
input:
12 40003 100000 1 30 76630775 108937143 130420127 131855472 105346114 128458369 108243185 68060064 126653745 129080952 113415931 106976535 67841016 131701837 31855974 114313669 128664055 83796306 89307860 119626895 87072131 90008292 101831649 86771064 109366112 78484048 96660693 94184079 84342338 61...
output:
939540479 1073610767 1073641825 511 432 13031 98303 12215 131071 3 65535 8388607 3145727 255 0 77823 65535 3839 8388607 47 1964794 4128767 36 3670015 8191 536870911 255 12287 524287 67108863 4095 8388607 1073741823 4095 255 7 100663295 258312620 1073741823 0 3670015 49151 511 469762047 16777215 343 ...
result:
wrong answer 16th lines differ - expected: '74495', found: '77823'
Test #13:
score: 0
Wrong Answer
time: 112ms
memory: 9240kb
input:
13 40003 100000 1 30 76630774 108936584 130420001 131856305 105347060 128457982 108243169 68059620 126654022 129081029 113415335 106976790 67840471 131702040 31855824 114314232 128663903 83796420 89307827 119626984 87072029 90008558 101830939 86770995 109365419 78483800 96660514 94183753 84342755 61...
output:
939540479 1073610767 1073641825 12287 16777215 131071 5308415 221158213 1048575 2097151 619401751 524287 3112959 2035055117 33554431 7 383 383 255 15601 85 196607 196607 131071 2097151 2 35 115993780 7 16351 3 10465754 33554431 4194303 7 4431 1331759 4095 219604519 2097151 2047 1791 127 33554431 364...
result:
wrong answer 4th lines differ - expected: '12187', found: '12287'
Test #14:
score: 0
Wrong Answer
time: 1ms
memory: 5820kb
input:
14 5 100 1000000000 30 13132 1189 129473 100435 99142 27988 125913 84108 88618 104500 18510 127909 33713 41539 73168 52981 93666 111173 97215 18318 116125 48796 66468 68341 66995 8141 6453 78522 5137 102161 79767 83305 55735 35923 57672 40415 26124 3517 89580 103805 63333 70578 15006 115257 25327 11...
output:
1073639423 1073741724 1073668095 1073643519 1073741731
result:
wrong answer 1st lines differ - expected: '1073641471', found: '1073639423'
Test #15:
score: 0
Wrong Answer
time: 0ms
memory: 5612kb
input:
15 5 100 1000000000 30 13147 1100 129952 101117 98742 27859 125802 84826 88433 104546 18804 127522 33108 41885 72848 52261 94114 110852 97024 17835 116004 48702 65612 68427 67541 7813 6415 78436 5289 102296 78964 83467 56256 36720 58141 39956 25783 3977 89405 104251 63057 69881 14546 115008 24936 10...
output:
1073641471 1073741725 1073659903 1073640447 1073741723
result:
wrong answer 2nd lines differ - expected: '1073741726', found: '1073741725'
Test #16:
score: 0
Wrong Answer
time: 21ms
memory: 6036kb
input:
16 4003 10000 1000000000 60 6301301488220013 13036910415217886 3587708952967093 9679001900905121 15370074903700843 10699351669343223 3693263165367499 11069887286230748 16712579672850495 7401912839403587 2739985286259605 4571772340856038 7048969239142713 1894459710006182 17112800883496323 12320029364...
output:
1134973076795031551 1152921504606830652 1152910796179636223 4194303 4503598956281855 135291469823 273200185343 587086 12287 1572863 201326591 18014397435740159 70368744177663 77882378 9007197107257343 234881023 274341036031 1048575 1125898295653465 5 281473366097919 3839 234881023 562948101149532 72...
result:
wrong answer 1st lines differ - expected: '1134974176306659327', found: '1134973076795031551'
Test #17:
score: 0
Wrong Answer
time: 21ms
memory: 6304kb
input:
17 4003 10000 1000000000 60 6301301819534654 13036910822653667 3587709968963537 9679000983663529 15370074961371554 10699347928378657 3693263473368908 11069883997526525 16712580951412763 7401916234416503 2739986911540418 4571770484223398 7048969495053322 1894461412350279 17112799936179837 12320030978...
output:
1134973076795031551 1152921504606830653 1152910792958410751 8388607 3221225471 36028794899530034 4503597479886847 140735522980586 4503599090499583 2198549323878 16 1540095 3218 7 1 140735340871679 7864319 536870911 281473391789514 15 70368073089023 26623 1048575 4503597532731216 140736414613503 15 7...
result:
wrong answer 21st lines differ - expected: '70367998693380', found: '70368073089023'
Test #18:
score: 0
Wrong Answer
time: 14ms
memory: 4072kb
input:
18 4003 10000 1000000000 60 6301305150188370 13036910274580735 3587707298181505 9679004703165232 15370075141428877 10699349494581236 3693260766091278 11069885717856260 16712580184551432 7401916423007610 2739984412836669 4571773004118082 7048970479824295 1894458866748282 17112803260092779 12320029000...
output:
1134976375329914879 1152921504606830655 1152910791884668927 253951 622204 35182224605183 1791 1610612735 393215 288230375154493203 7 281473902968831 67108863 402653183 70367670435839 8796025913343 14680063 4160749567 786431 70368250034460 1879048191 511 98303 67108863 2251799075487743 28823037504441...
result:
wrong answer 1st lines differ - expected: '1134977474841542655', found: '1134976375329914879'
Test #19:
score: 0
Wrong Answer
time: 284ms
memory: 9244kb
input:
19 62501 100000 1000000000 120 1154838249421518343773531773357597778 1154838249421518343773531773357629327 1154838249421518343773531773357650307 1154838249421518343773531773357651709 1154838249421518343773531773357625821 1154838249421518343773531773357648391 1154838249421518343773531773357628650 115...
output:
1329227995784915872903807060280213591 1329227995784915872903807060280344575 1329227995784915872903807060280344575 1329227995784915872903807060280344575 1329227995784915872903807060280344575 1329227995784915872903807060280344575 1329227995784915872903807060280344575 1329227995784915872903807060280344...
result:
wrong answer 50008th lines differ - expected: '676924893825300963441008904862539035', found: '685383185326597246966025515457052667'
Test #20:
score: 0
Wrong Answer
time: 256ms
memory: 9036kb
input:
20 62501 100000 1000000000 120 323632031276481459143358069001495634 323632031276481459143358069001527183 323632031276481459143358069001548163 323632031276481459143358069001549565 323632031276481459143358069001523677 323632031276481459143358069001546247 323632031276481459143358069001526506 3236320312...
output:
1329227995784915872903807060280213599 1329227995784915872903807060280344575 1329227995784915872903807060280344575 1329227995784915872903807060280344575 1329227995784915872903807060280344575 1329227995784915872903807060280344575 1329227995784915872903807060280344575 1329227995784915872903807060280344...
result:
wrong answer 50005th lines differ - expected: '974477504172568261757499662021498084', found: '996920996838686904677855295210258423'
Test #21:
score: 0
Wrong Answer
time: 293ms
memory: 9292kb
input:
21 62501 100000 1000000000 120 94863733210630102424008628084424216 134857169996406520360367913319523910 161452665267901932764497978184577026 163229916633468866695669655916793917 130413130894076501442669761804067887 159024080878679252370015542440688101 133998758779238309221865949392709341 84253191505...
output:
1163191120167022385895768874440196095 1329227995784915872903807060280344575 1329227995784915872903807060280344575 1329227995784915872903807060280344575 1329227995784915872903807060280344575 1329227995784915872903807060280344575 1329227995784915872903807060280344575 1329227995784915872903807060280344...
result:
wrong answer 1st lines differ - expected: '1163193655468222842354571867846606847', found: '1163191120167022385895768874440196095'
Test #22:
score: 0
Wrong Answer
time: 466ms
memory: 9240kb
input:
22 120001 100000 1000000000 120 47471234275189825886337730002101330 47471234275189825886337730002132879 47471234275189825886337730002153859 47471234275189825886337730002155261 47471234275189825886337730002129373 47471234275189825886337730002151943 47471234275189825886337730002132202 4747123427518982...
output:
1329227995784915872903807060280213591 1329227995784915872903807060280344575 1329227995784915872903807060280344575 1329227995784915872903807060280344575 1329227995784915872903807060280344575 1329227995784915872903807060280344575 1329227995784915872903807060280344575 1329227995784915872903807060280344...
result:
wrong answer 100007th lines differ - expected: '877088838930135705901559620479396339', found: '996920996838686904677855295210258423'
Test #23:
score: 0
Wrong Answer
time: 472ms
memory: 9296kb
input:
23 120001 100000 1000000000 120 10384594543745281933157089286344285 10384595087221325583432181750603761 10384596344313448100419024142756824 10384597896452402824418716086599406 10384599662161038685053136018241571 10384600136159512396111755729028709 10384601958291386084902861505361244 1038460344973912...
output:
1329104224063908042013162096042180607 1329227995784915872903807060280344575 1329227995784915872903807060280344575 1329227995784915872903807060280344575 1329227995784915872903807060280344575 1329227995784915872903807060280344575 1329227995784915872903807060280344575 1329227995784915872903807060280344...
result:
wrong answer 1st lines differ - expected: '1329104226539788120583922645840429055', found: '1329104224063908042013162096042180607'
Test #24:
score: 0
Wrong Answer
time: 494ms
memory: 9072kb
input:
24 120001 100000 1000000000 120 10384594585679242355840829886289379 10384595083750076569134324633632941 10384596423425537641166720528386677 10384598270636404608178558554968102 10384598723408000881156593449465505 10384600392016296777984789088889743 10384602014485619490959986853506329 1038460298717050...
output:
1329104229015668199154683195638677503 1329227995784915872903807060280344575 1329227995784915872903807060280344575 1329227995784915872903807060280344575 1329227995784915872903807060280344575 1329227995784915872903807060280344575 1329227995784915872903807060280344575 1329227995784915872903807060280344...
result:
wrong answer 100002nd lines differ - expected: '1173121157814572548538810031119834336', found: '1173459090028871044047892170403741687'
Test #25:
score: 0
Wrong Answer
time: 444ms
memory: 9024kb
input:
25 120001 100000 1000000000 120 10384594059032377855972206804990515 10384595922446112233978399250497752 10384596677646074836565734489994716 10384597585175584397302672981127521 10384599121981302637859909713499899 10384600188980133483790411300324684 10384601157708131158985167495674683 1038460244379676...
output:
1329104229015668199154683195638677503 1329227995784915872903807060280344575 1329227995784915872903807060280344575 1329227995784915872903807060280344575 1329227995784915872903807060280344575 1329227995784915872903807060280344575 1329227995784915872903807060280344575 1329227995784915872903807060280344...
result:
wrong answer 1st lines differ - expected: '1329104231491548277725443745436925951', found: '1329104229015668199154683195638677503'