大体思路是开一个时间线的数组,存放该时间点广场的人数,每次读入数据时,左端点++,右端点–,之后遍历一遍判断人数是否为2,最后输出即可
#include <iostream>
using namespace std;
const int maxn = 1000005;
#define INF 0x3f3f3f3f
int a[maxn],n;
int main()
{
scanf("%d",&n);
for(int i=1;i<=n*2;i++)
{
int l,r;
scanf("%d%d",&l,&r);
a[l]++;
a[r]--;
}
int cnt = 0;
int ans = 0;
for(int i=1;i<=maxn;i++)
{
cnt+=a[i];
if(cnt==2)
{
ans++;
}
}
printf("%d\n",ans);
return 0;
}