QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#393267 | #5117. Find Maximum | Tolret | WA | 0ms | 3672kb | C++20 | 1.8kb | 2024-04-18 13:49:01 | 2024-04-18 13:49:01 |
Judging History
answer
#include<bits/stdc++.h>
#define int long long int
#define inf
#define pb push_back
#define pii pair<int,int>
#define fi first
#define se second
using namespace std;
const int maxn=1e6+5;
int tt=1;
int arr1[64],arr2[64];
int quick(int x,int y)
{
int yy=1;
while(y)
{
if(y&1)
yy=yy*x;
y>>=1;
x=x*x;
}
return yy;
}
void chan(int *a,int val)
{
int wei=63;
while(val)
{
a[wei]=val%3;
val/=3;wei--;
}
}
void solve()
{
int l,r;cin>>l>>r;
for(int i=0;i<=63;i++)
{
arr1[i]=arr2[i]=0;
}
chan(arr1,l);chan(arr2,r);
int maxwei=63;
for(int i=0;i<=63;i++)
{
if(arr2[i])
{
maxwei=i;break;
}
}
int val=0;
int ans=0,cnt=1;
for(int i=maxwei;i<=63;i++)
{
int e=val;
if(arr2[i]==0)continue;
e+=quick(3,63-maxwei)*(arr2[i]-1);
int u=cnt+arr2[i]-1;
for(int j=i+1;j<=63;j++)
{
e+=quick(3,63-j)*(2);u+=2;
}
if(i==maxwei)
{
if(arr2[i]-1)
{
u+=63-maxwei;
}
else
{
u+=max((int)0,63-maxwei-1);
}
cnt+=63-maxwei;
}
if(e>=l)
ans=max(ans,u);
val+=quick(3,63-maxwei)*arr2[i];cnt+=arr2[i];
}
ans=max(ans,cnt);
cout<<ans<<'\n';
// for(int i=maxwei;i<=63;i++)
// {
// cout<<arr1[i]<<' ';
// }
// cout<<'\n';
// for(int i=maxwei;i<=63;i++)
// {
// cout<<arr2[i]<<' ';
// }
// cout<<'\n';
}
signed main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr); cout.tie(nullptr);
cin>>tt;
for(int i=1;i<=tt;i++)
solve();
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 0ms
memory: 3660kb
input:
10 1 2 1 3 1 4 1 5 2 3 2 4 2 5 3 4 3 5 4 5
output:
3 3 4 5 3 4 5 4 5 5
result:
ok 10 numbers
Test #2:
score: -100
Wrong Answer
time: 0ms
memory: 3672kb
input:
5050 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 1 10 1 11 1 12 1 13 1 14 1 15 1 16 1 17 1 18 1 19 1 20 1 21 1 22 1 23 1 24 1 25 1 26 1 27 1 28 1 29 1 30 1 31 1 32 1 33 1 34 1 35 1 36 1 37 1 38 1 39 1 40 1 41 1 42 1 43 1 44 1 45 1 46 1 47 1 48 1 49 1 50 1 51 1 52 1 53 1 54 1 55 1 56 1 57 1 58 1 59 1 60 1 61...
output:
2 3 3 4 5 5 5 6 6 6 6 6 6 7 7 7 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 10 10 10 10 10 10 10 10 10 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 11 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 3 3 4 5 5 5 6 6 6 6 6 6 7 7 7 8 8 8 8 8 8 8...
result:
wrong answer 1310th numbers differ - expected: '6', found: '7'