Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- #define int long long
- using namespace std;
- signed main(){
- //freopen("input.txt", "r", stdin);
- //freopen("output.txt", "w", stdout);
- ios_base::sync_with_stdio(0);
- cin.tie(0);
- cout.tie(0);
- int n, m;
- cin >> m >> n;
- vector<int> start(n), fin(n);
- vector<pair<int,int>> w(m);
- for(int i = 0; i < m; i++){
- cin >> w[i].first >> w[i].second;
- w[i].first--;
- w[i].second--;
- start[w[i].first]++;
- fin[w[i].second]++;
- }
- int cur = 0;
- vector<int> res(n);
- for(int i = 0; i < n; i++){
- cur += start[i];
- res[i] = cur;
- cur -= fin[i];
- }
- /*for(auto it : res) cout << it << ' ';
- cout << '\n';*/
- vector<int> dpl(n, 1e9);
- vector<int> dpr(n, 1e9);
- vector<int> ansl(n);
- vector<int> ansr(n);
- ansl[0] = 1;
- dpl[0] = -1;
- dpl[1] = res[0];
- for(int i = 1; i < n; i++){
- int idl = upper_bound(dpl.begin(), dpl.end(), res[i]) - dpl.begin();
- dpl[idl] = res[i];
- ansl[i] = idl;
- }
- /*for(auto it : dpl) cout << it << ' ';
- cout << '\n';
- for(auto it : ansl) cout << it << ' ';*/
- ansr[n-1] = 1;
- dpr[1] = res[n-1];
- dpr[0] = -1;
- for(int i = n-2; i >= 0; i--){
- int idr = upper_bound(dpr.begin(), dpr.end(), res[i]) - dpr.begin();
- dpr[idr] = res[i];
- ansr[i] = idr;
- }
- /*cout << '\n';
- for(auto it : dpr) cout << it << ' ';
- cout << '\n';
- for(auto it : ansr) cout << it << ' ';*/
- int ans = 0;
- for(int i = 0; i < n; i++){
- ans = max(ans, ansl[i] + ansr[i] - 1);
- }
- cout << ans;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement