QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#589255 | #5920. Many Prizes | WRYYY | 20 ✓ | 1ms | 3652kb | C++14 | 1.4kb | 2024-09-25 16:55:24 | 2024-09-25 16:55:24 |
Judging History
answer
#include <bits/stdc++.h>
#define ll long long
#define ull unsigned long long
#define m_p make_pair
#define m_t make_tuple
#define N 55
using namespace std;
ll p2[N];
ll getbrk(ll l, ll r, ll les) // get best rank of x
{
if (l == r)
return l;
ll mid = l + r >> 1;
if (les)
return getbrk(l, mid, (les - 1) >> 1);
return getbrk(mid + 1, r, 0);
}
signed main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
int T;
cin >> T;
ll n, p, l, r, ans, mid;
p2[0] = 1;
for (int i = 1; i < N; i++)
p2[i] = p2[i - 1] * 2ll;
for (int zzz = 1; zzz <= T; zzz++)
{
cin >> n >> p;
cout << "Case #" <<zzz<< ": ";
if (p == p2[n])
cout << p2[n] - 1 << " " << p2[n] - 1;
else if (p == 1)
cout << "0 0";
else if (p <= p2[n - 1])
{
cout << "0 ";
ans = 1;
l = 1;
r = p2[n] - 1;
while (l <= r)
{
mid = l + r >> 1;
if (getbrk(1, p2[n], p2[n] - mid) <= p)
{
l = mid + 1;
ans = mid;
}
else
r = mid - 1;
}
cout << ans - 1;
}
else
{
p = p2[n] - p;
ans = 1;
l = 1;
r = p2[n] - 1;
while (l <= r)
{
mid = l + r >> 1;
if (getbrk(1, p2[n], p2[n] - mid) <= p)
{
l = mid + 1;
ans = mid;
}
else
r = mid - 1;
}
cout << p2[n] - ans - 1 << " " << p2[n] - 2;
}
cout << "\n";
}
return 0;
}
详细
Subtask #1:
score: 7
Accepted
Test #1:
score: 7
Accepted
time: 0ms
memory: 3652kb
input:
100 7 97 1 1 3 2 7 39 9 500 5 19 10 964 9 512 10 897 9 3 5 32 3 4 10 511 5 31 3 8 9 257 10 1023 6 4 6 52 7 127 6 32 7 124 4 2 10 1024 10 512 5 16 6 33 9 255 7 106 8 102 7 3 3 5 6 63 5 28 10 896 3 7 8 245 5 22 6 31 10 513 6 55 6 33 5 23 10 13 6 47 9 504 10 979 6 29 8 252 5 21 2 4 6 57 8 12 8 28 10 25...
output:
Case #1: 6 126 Case #2: 0 0 Case #3: 0 4 Case #4: 0 124 Case #5: 62 510 Case #6: 2 30 Case #7: 30 1022 Case #8: 511 511 Case #9: 14 1022 Case #10: 0 256 Case #11: 31 31 Case #12: 0 6 Case #13: 0 1020 Case #14: 30 30 Case #15: 7 7 Case #16: 2 510 Case #17: 1022 1022 Case #18: 0 48 Case #19: 6 62 Case...
result:
ok 100 lines
Subtask #2:
score: 13
Accepted
Test #2:
score: 13
Accepted
time: 1ms
memory: 3624kb
input:
100 19 524195 5 15 24 16777094 14 16128 21 1 8 29 20 1048404 42 33554432 26 33554433 1 1 7 9 46 153688554 43 1073741823 6 53 49 536870911 13 300 3 3 6 53 43 8796090966783 9 512 32 2147483647 50 403864 43 4398046511103 7 1 38 274876961061 35 55 27 22146 21 255 5 22 38 206158430209 39 34359738367 38 2...
output:
Case #1: 8190 524286 Case #2: 0 28 Case #3: 262142 16777214 Case #4: 62 16382 Case #5: 0 0 Case #6: 0 240 Case #7: 8190 1048574 Case #8: 0 4398046380032 Case #9: 2 67108862 Case #10: 0 0 Case #11: 0 112 Case #12: 0 70368743653376 Case #13: 0 8796093005824 Case #14: 6 62 Case #15: 0 562949951324160 C...
result:
ok 100 lines
Extra Test:
score: 0
Extra Test Passed