#include<bits/stdc++.h>
#define maxn 150005
using namespace std;
struct grass{
int l,r,v;
}a[maxn];
int n,dp[maxn];
bool cmp(grass a,grass b)
{
return a.r<b.r;
}
int f(int l,int r,int val)
{
int mid,ans;
while(l<=r)
{
mid=(l+r)>>1;
if(a[mid].r<val)
{
l=mid+1;
ans=mid;
}
else r=mid-1;
}
return ans;
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i].l>>a[i].r;
a[i].v=a[i].r-a[i].l+1;
}
sort(a+1,a+n+1,cmp);
for(int i=1;i<=n;i++)
dp[i]=max(dp[i-1],dp[f(1,i-1,a[i].l)]+a[i].v);
cout<<dp[n]<<endl;
return 0;
}
为什么我RE了,求调,悬关