提交时间:2025-10-08 14:03:09

运行 ID: 38430

#include <bits/stdc++.h> #define int long long using namespace std; int n; int c[100005][3]; int cnt[100005]; int minn=1000000001,maxn=0; pair<int,int> a[300005]; bool check(int md){ for (int i=1;i<=n;i++){ cnt[i]=0; } int kd=0; int l=1; for (int r=1;r<=3*n;r++){ int dq=a[r].second; if (cnt[dq]==0){ kd++; } cnt[dq]++; int ls=a[l].first,rs=a[r].first; while (rs-ls>md){ int lc=a[l].second; cnt[lc]--; if (cnt[lc]==0){ kd--; } l++; ls=a[l].first; } if (kd==n and rs-ls<=md){ return 1; } } return 0; } signed main(){ // ios::sync_with_stdio(0); // cin.tie(0);cout.tie(0); cin>>n; for (int i=1;i<=n;i++){ for (int j=0;j<3;j++){ cin>>c[i][j]; a[3*(i-1)+j+1]={c[i][j],i}; minn=min(minn,c[i][j]); maxn=max(maxn,c[i][j]); } } sort(a+1,a+3*n+1); int l=0,r=maxn-minn; int ans=r; while (l<=r){ int mid=(l+r)/2; if (check(mid)){ ans=mid; r=mid-1; } else{ l=mid+1; } } cout<<ans<<"\n"; return 0; }