1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| #include <cstdio> #include <algorithm> #include <cstring> #include <string> #include <cmath> #include <iostream> #include <iomanip> using namespace std; int n,mx,dp[3000005],j,ans; struct Cow{ int x,y,s; }a[150005]; inline bool cmp(Cow p,Cow q){return p.x!=q.x?p.x<q.x:p.y<q.y;} int main(){ scanf ("%d",&n); for (int i=0;i<n;i++){ scanf ("%d%d",&a[i].x,&a[i].y),a[i].s=a[i].y-a[i].x+1; mx=max(mx,a[i].y); } sort(a,a+n,cmp); for (int i=0;i<=mx;i++){ dp[i]=max(dp[i],dp[i-1]); while (a[j].x==i&&j<n){ dp[a[j].y]=max(dp[a[j].y],dp[a[j].x-1]+a[j].s); j++; } ans=max(ans,dp[i]); } printf ("%d",ans); return 0; }
|