Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
41804 zhengchengzhuo 【S】T2 C++ 解答错误 95 1467 MS 9636 KB 1294 2026-05-29 20:37:41

Tests(34/35):


#include <bits/stdc++.h> #define int long long using namespace std; const int maxn=3e5+10; int t,n,a[maxn],b[maxn],ma[maxn],mi[maxn]; bool check(int x){ //cout<<x<<endl; memset(ma,0,sizeof(ma)); memset(mi,0,sizeof(mi)); int rr=1; for(int i=1;i<=n;i++){ rr=max(rr,i); while(rr<=n&&a[i]+x>b[rr])rr++; if(rr>n)ma[i]=-1; else ma[i]=rr; } rr=n; for(int i=n;i>=1;i--){ while(rr>=1&&a[i]-x<b[rr])rr--; if(rr==0)mi[i]=-1; else mi[i]=rr; } //for(int i=1;i<=n;i++)cout<<ma[i]<<" "; //cout<<endl; //for(int i=1;i<=n;i++)cout<<mi[i]<<" "; //cout<<endl; //cout<<endl; int fmi=0,fma=n-1; for(int i=1;i<=n;i++){ if(ma[i]==-1){ fmi=max(fmi,n-i+1); } else fmi=max(fmi,ma[i]-i); if(mi[i]==-1){ fma=min(fma,n-i); } else fma=min(fma,mi[i]+n-i); } //cout<<fma<<" "<<fmi<<endl; return fma>=fmi; } signed main(){ cin>>t; while(t--){ cin>>n; for(int i=1;i<=n;i++)cin>>a[i]; for(int i=1;i<=n;i++)cin>>b[i]; if(n==1){ cout<<abs(a[1]-b[1]); continue; } sort(a+1,a+n+1); sort(b+1,b+n+1); int l=0,r=2e9+10,res=-1,mid; while(l<=r){ mid=(l+r)/2; if(check(mid)){ res=mid; l=mid+1; }else r=mid-1; } cout<<res<<endl; } } /* 1 1 462692867 276447622 */


测评信息: