QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#304429 | #6510. Best Carry Player 3 | Ice_teapoy | TL | 19ms | 3572kb | C++14 | 1.4kb | 2024-01-13 19:42:39 | 2024-01-13 19:42:42 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
using LL=long long;
LL x,y,k;
LL solve()
{
cin >>x >>y >>k;
if(x == y) return 0;
if(x >y) {
int cnt = 0;
LL t = 1, num = 0;
if((k + 1&k) == 0) cnt = 2;
else cnt = 3;
for(int i = k;i;i>>=1) t<<=1,num++;
LL s = (x>>num)-(y>>num);
if(s == 0) {
if((x^y)<=k) return 1;
else return 2;
}
LL ans = 0;
if((x&(t-1)) == 0) ans = 0;
else if((x&(t-1))<=k) ans = 1;
else ans = 2;
ans += s * cnt - cnt + 1;
if(((t-1&y)^(t-1))==0) return ans;
if(((t-1&y)^(t-1))<=k) return ans + 1;
return ans + 2;
}
int cnt = 0;
if((k+1&k)==0) cnt=2;
else cnt = 3;
LL t = 1, num = 0;
for(int i = k; i; i >>= 1) t<<=1,num++;
LL s =(y>>num)-(x>>num);
if(s == 0) {
if((x^y)<=k) return 1;
else return 2;
}
LL ans = 0;
if((x&(t-1)^(t-1))==0) ans = 0;
else if((x&(t-1)^(t-1))<=k) ans = 1;
else ans = 2;
ans += s *cnt - cnt +1;
if((t-1&y)==0) return ans;
if((t-1&y)<=k) return ans + 1;
return ans + 2;
}
int main()
{
cin.tie(0);
cout.tie(0);
ios::sync_with_stdio(0);
int T;
for (cin>>T;T--;)
{
LL ans = solve();
cout<<min(ans,max(x,y) - min(x,y))<<"\n";
}
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 1ms
memory: 3452kb
input:
8 4 5 0 5 8 3 9 2 6 15 28 5 97 47 8 164 275 38 114514 1919 810 0 1152921504606846975 1
output:
1 2 3 5 11 6 331 1152921504606846975
result:
ok 8 numbers
Test #2:
score: 0
Accepted
time: 17ms
memory: 3460kb
input:
100000 84 318 6 54 226 7 92 33 0 39 54 5 76 79 7 247 110 0 211 90 0 4 430 3 230 17 1 491 93 5 196 117 7 137 29 2 76 490 6 422 43 7 277 26 4 159 43 1 67 37 5 17 2 5 113 176 7 85 473 0 68 217 7 275 8 7 124 34 1 30 66 0 80 149 3 103 149 6 84 354 1 27 342 7 94 114 1 69 125 1 72 48 7 361 8 7 285 82 1 74 ...
output:
87 45 59 6 1 137 121 213 213 150 21 81 156 95 95 116 12 6 16 388 39 67 90 36 35 17 270 79 20 56 6 89 203 108 26 15 157 98 111 389 174 123 59 289 78 17 21 36 275 191 17 102 60 93 100 11 6 79 44 63 91 60 22 109 11 3 10 67 11 85 207 47 39 83 156 189 107 27 81 247 81 335 33 144 11 50 54 347 233 175 30 7...
result:
ok 100000 numbers
Test #3:
score: 0
Accepted
time: 13ms
memory: 3572kb
input:
100000 322 25 2699 83 407 606 157 77 162 358 3 4064 407 35 1145 15 491 801 174 95 1886 67 93 2573 415 7 2014 16 203 2003 95 357 453 287 14 1247 63 108 3617 124 30 3806 116 425 830 483 63 2237 97 123 1194 124 460 2729 71 99 818 118 24 527 92 236 3298 446 55 413 0 122 3335 193 64 318 55 201 3120 475 8...
output:
1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 7 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 6 1 1 1 1 3 1 1 1 3 1 1 1 1 1 1 1 1 5 1 1 1 1 1 1 2 1 1 1 1 6 1 1 1 6 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 1 10 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 114 1 1 1 1 1 1 1 1...
result:
ok 100000 numbers
Test #4:
score: 0
Accepted
time: 19ms
memory: 3568kb
input:
100000 460 16 1999514420 38 120 459071025 36 5 435961014 415 44 1634888670 236 110 1172545331 116 449 1722938168 9 55 1093539809 98 9 2009254678 160 13 874849076 72 59 307472779 94 278 829310177 375 21 1588655085 85 272 1310414813 101 309 2072973009 96 370 510582365 55 6 285781515 45 99 743723479 43...
output:
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...
result:
ok 100000 numbers
Test #5:
score: -100
Time Limit Exceeded
input:
100000 102 211 434535176914392191 113 382 10473939473902551 154 70 347749780432060530 307 4 770301859497555482 21 88 1148164284941713103 141 52 298799672146159282 86 67 592474494235856008 126 423 500925453682730053 72 23 751099353059890065 105 60 591595972426609814 1 312 322398882693527462 488 21 29...