对于输入的每对l和r,将s[l]加一,s[r+1]减一,然后从0到n扫描,s不断加上a[i],所以s代表当前的i位置被多少条道路覆盖,对于每个i,如果s值为0,那么答案ans就加一
#include <iostream>
#include <cstdio>
using namespace std;
int read()
{
int x=0,f=1;
char c=getchar();
while(c<'0'||c>'9')
{
if(c=='-') f=-1;
c=getchar();
}
while(c>='0'&&c<='9')
{
x=x*10+c-'0';
c=getchar();
}
return f*x;
}
const int N=1e4+5;
int n,m,s[N],l,r,cnt,ans;
int main()
{
n=read(); m=read();
while(m--)
{
l=read(); r=read();
s[l]++; s[r+1]--;
}
for(int i=0;i<=n;i++)
{
cnt+=s[i];
if(!cnt) ans++;
}
cout<<ans;
return 0;
}