提交时间:2025-10-08 15:44:25
运行 ID: 38471
#include<bits/stdc++.h> using namespace std; int n; struct node{ int id,num; }a[300005]; bool cmp(node x,node y){return x.num<y.num;} int cnt[100005]; int c=0; bool check(int k){ int l=1,r=1; int cntz=0; c=0; memset(cnt,0,sizeof cnt); for(l=1;l<=n;l++){ if(cnt[a[l-1].id]==1)c--; cnt[a[l-1].id]--; while(a[r].num<a[l].num+k&&r<=3*n){ if(cnt[a[r].id]==0)c++; cnt[a[r].id] ++; r++; } if(c==n)return 1; } return 0; } int main(){ scanf("%d",&n); int cnt = 0; for(int i = 1;i<=n;i++){ cnt++; scanf("%d",&a[cnt].num); a[cnt].id=i; cnt++; scanf("%d",&a[cnt].num); a[cnt].id=i; cnt++; scanf("%d",&a[cnt].num); a[cnt].id=i; } sort(a+1,a+3*n+1,cmp); int l=0,r=1e9; while(l+1<r){ int mid=(l+r)>>1; //printf("%d %d %d\n",l,r,mid); if(check(mid)) r=mid; else l=mid; } cout<<l<<endl; }