注意减枝
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<queue>
#include<stack>
using namespace std;
typedef struct node{
int x,y;
}node;
bool cmp(node n1,node n2){
return n1.x<n2.x;
}
int main(){
node no[50000+10];
int n;
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d%d",&no[i].x,&no[i].y);
}
sort(no,no+n,cmp);
int maxn=0;
for(int i=0;i<n;i++){
for(int j=i+1;j<n;j++){
if(no[j].x>no[i].y) break;
if(no[j].y<=no[i].y){
if(no[j].y-no[j].x>maxn) maxn=no[j].y-no[j].x;
}
else{
if(no[i].y-no[j].x>maxn) maxn=no[i].y-no[j].x;
break;
}
}
}
cout<<maxn;
return 0;
}