提交时间:2022-07-19 12:08:29

运行 ID: 52405

#include <bits/stdc++.h> using namespace std; const int maxn = 500000 + 10; struct Node { int l; int r; int length; }; int n; Node a[maxn]; bool vis[maxn]; int f[maxn]; int ans = 0; int solve(int cur) { int res = 0; for(int i = 0; i < n; ++i) { if(!vis[i]) { if(a[i].l >= a[cur].l && a[i].r <= a[cur].r) { vis[i] = true; res = max(res, solve(i)); vis[i] = false; } } } return 1 + res; } int main() { //freopen("game.in", "r", stdin); //freopen("game.out", "w", stdout); memset(vis, 0, sizeof(vis)); scanf("%d", &n); for(int i = 0; i < n; ++i) { scanf("%d%d", &a[i].l, &a[i].r); a[i].length = a[i].r - a[i].l + 1; } // 20% for(int i = 0; i < n; ++i) { vis[i] = true; int cur = solve(i); ans = max(ans, cur); vis[i] = false; } printf("%d", ans); //fclose(stdin); //fclose(stdout); return 0; }