QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#779229 | #5117. Find Maximum | xiangji | WA | 3ms | 3556kb | C++20 | 1.6kb | 2024-11-24 18:00:48 | 2024-11-24 18:00:48 |
Judging History
answer
#pragma GCC optimize(2)
#pragma GCC optimize(3)
#include <bits/stdc++.h>
using namespace std;
#define endl '\n'
#define debug(x) cout << #x << "=" << x << endl
//using i128 = __int128_t;
#define int long long
typedef pair<int,int> PII;
typedef long long ll;
inline void read(int &x){
char ch=getchar();int f=1;x=0;
while(!isdigit(ch) && ch^'-') ch=getchar();
if(ch=='-') f=-1,ch=getchar();
while(isdigit(ch)) x=x*10+ch-'0',ch=getchar();
x*=f;
}
void write(int x){
if(x<0)
putchar('-'),x=-x;
if(x>9)
write(x/10);
putchar(x%10+'0');
return;
}
int l,r;
void rCL(){
cin>>l>>r;
vector<int>L,R;
while(l){
L.push_back(l%3);
l/=3;
}
while(r){
R.push_back(r%3);
r/=3;
}
int res=-1;
auto calc=[&](auto calc,vector<int>L,vector<int>R,int p,int sum,int flag)->void{
if(p==L.size()){
res=max(res,(ll)L.size()+sum);
return ;
}
if(flag){
res=max(res,(ll)sum+((ll)L.size()-p)*2+(ll)L.size());
return ;
}
calc(calc,L,R,p+1,sum+R[p],0);
if(L[p]<=R[p]-1){
calc(calc,L,R,p+1,sum+R[p]-1,1);
}
};
if(L.size()<R.size()){
int ls=L.size();int rs=R.size();
res=max(res,(rs-1)*2+(rs-1));
vector<int>LL(rs);
LL[0]=1;
for(int i=1;i<rs;i++)LL[i]=0;
calc(calc,LL,R,0,0,0);
}else{
calc(calc,L,R,0,0,0);
}
//cout<<"S"<<endl;
cout<<res<<endl;
}
signed main(){
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
int O_o;
cin>>O_o;
while(O_o--){
rCL();
}
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 0ms
memory: 3556kb
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: 3ms
memory: 3504kb
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 4 5 6 6 6 8 6 6 8 6 7 8 6 6 8 6 7 8 7 8 9 9 9 11 9 9 11 9 10 11 9 9 11 9 9 11 9 10 11 9 9 11 9 9 11 9 10 11 9 9 11 9 9 11 9 10 11 9 9 11 9 9 11 9 10 11 9 9 11 9 10 11 10 11 12 12 12 14 12 12 14 12 13 14 12 12 14 12 12 14 12 13 14 12 12 3 3 4 5 4 5 6 6 6 8 6 6 8 6 7 8 6 6 8 6 7 8 7 8 9 9 9 ...
result:
wrong answer 6th numbers differ - expected: '5', found: '4'