给定n条线段的起点和终点找到任意两条线段相交的最大值。对于所有的线段的起点进行排序。将每一个线段i的起点作为相交的起点,找到线段j(j < i)终点的最大值与线段i终点的最大值进行比较,获取最大相交线段长度,复杂度O(nlogn)
void solve()
{
#ifndef ONLINE_JUDGE
freopen("input.in","r",stdin);
#endif
pair<int,int> p[MAX];
int n;
RDI(n);
REP(i, n) RDI_2(p[i].x, p[i].y);
sort(p, p + n);
int ans = 0;
int maxEnd = p[0].y;
for(int i = 1; i < n; ++i)
{
ans = max(ans, min(maxEnd, p[i].y) - p[i].x);
maxEnd = max(maxEnd, p[i].y);
}
PUTI(ans);
}