// 直接对每个点进行排序 #include <algorithm> #include <iostream> #include <utility> #include <vector> using namespace std; bool cmp(pair<int,int> s1, pair<int,int> s2){ if(s1.first != s2.first) return s1.first < s2.first; else return s1.second < s2.second; } int main() { int n, m; cin >> n >> m; int sum = n+1; int start , end; vector<pair<int,int>> cuts(m); for(int i=0; i<m; i++) cin >> cuts[i].first >> cuts[i].second; sort(cuts.begin(), cuts.end(), cmp); start = cuts[0].first; end = cuts[0].second; int len = 0; // 用来记录每次应该减去多少 for(int i=0; i<m; i++){ int curLen; if(cuts[i].first > end){ start = cuts[i].first; end = cuts[i].second; len = end-start+1; }else{ end = max(cuts[i].second, end); len = (end-start+1) - len; } sum -= len; len = (end-start+1); } cout << sum << endl; return 0; } // 64 位输出请用 printf("%lld")