#include<bits/stdc++.h>
using namespace std;
int n;
int a[50000],b[50000];
int dopp=0,d[50000];
int cppo=0,c[50000];
int f[500000]={0};
int check(int x){
int l=1,r=cppo,m;
while(l+1<r){
m=(l+r)>>1;
if(m>x){
r=m;
}
else{
l=m;
}
}
return l;
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i]>>b[i];
d[++dopp]=a[i];
d[++dopp]=b[i];
}
sort(d+1,d+dopp+1);
d[0]=-10000009;
for(int i=1;i<=dopp;i++){
if(d[i]!=d[i-1]){
c[cppo++]=d[i];
}
}
for(int i=1;i<=n;++i){ //有问题:为什么i++和++i最后输出的值不同
a[i]=check(a[i]);
b[i]=check(b[i]);
for(int j=a[i];j<b[i];j++){
f[j]=1;
}
}
long long ans=0;
for(int i=1;i<cppo;i++){
if(f[i]){
ans+=c[i+1]-c[i];
}
}
cout<<ans;
}
输入
3
-1 1
5 11
2 9
正确输出 11
我的输出 9