来个大佬看看呀,为什么这串代码只有25分呀,我感觉和题解的区别不大呀
#include<iostream>
#include<cstring>
#include<algorithm>
#include<unordered_map>
using namespace std;
#define int long long
#define ios ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
#define MAXN 1000010
#define x first
#define y second
typedef pair<int,int> PII;
const int INF=1e9;
int a[MAXN];
int v[MAXN];
unordered_map<int,PII> mp;
signed main(){
ios;
int n=3;
a[1]=1,a[2]=2;
mp[1]={2,1};
while(1){
if(n&1)a[n]=2*a[n-1];
else{
for(int j=1;;j++)
if(!mp.count(j)){
a[n]=a[n-1]+j;
break;
}
}
for(int i=1;i<n;i++)
mp[a[n]-a[i]]={n,i};
if(n%2==0&&a[n]>INF)break;
n++;
}
int cnt=0;
for(auto it:mp)v[++cnt]=it.x;
int q;
cin>>q;
while(q--){
int b;
cin>>b;
if(mp.count(b)){
cout<<mp[b].x<<" "<<mp[b].y<<endl;
}else {
int c=lower_bound(v+1,v+1+cnt,b)-v-1;
cout<<n+(b-c)*2<<" "<<n+(b-c)*2-1<<endl;
}
}
return 0;
}