#include<bits/stdc++.h>
using namespace std;
struct qujian
{
int left, right;
};
qujian qj[300010];
bool cmp(qujian a, qujian b)
{
return a.left < b.left;
}
int main()
{
int l, m;
scanf("%d%d", &l, &m);
for(int i = 1; i <= m; i++) scanf("%d%d", &qj[i].left, &qj[i].right);
sort(qj + 1, qj + m + 1, cmp);
int ans = 0;
qj[m+1]={1e9+1,1e9+1};
for(int i = 1; i <= m; i++)
{
if(qj[i].right < qj[i + 1].left) ans += qj[i].left - qj[i].left + 1;
else qj[i + 1] = {min(qj[i].left, qj[i + 1].left), max(qj[i].right, qj[i + 1].right)};
}
printf("%d", l + 1 - ans);
return 0;
}
不知道哪错了,输出的结果很离谱。