Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
41814 zhengchengzhuo 【S】T2 C++ 通过 101 1536 MS 9632 KB 1514 2026-05-29 20:52:38

Tests(45/45):


#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--){ rr=min(rr,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]; sort(a+1,a+n+1); sort(b+1,b+n+1); if(n==1){ cout<<abs(a[1]-b[1])<<endl; continue; } if(n<=100){ int ans=0,tot=0; for(int i=0;i<n;i++){ tot=2147483647; for(int j=1;j<=n;j++){ tot=min(tot,abs(a[j]-b[(i+j-1)%n+1])); } ans=max(ans,tot); } cout<<ans<<endl; continue; } 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; } }


测评信息: