题目描述
小鱼有 n 名优秀的粉丝。
粉丝们得知小鱼将会在一条直线上出现,打算去膜他。为了方便,粉丝们在这条直线上建立数轴。
第 i 名粉丝有一个侦查区间[li,ri] 。如果小鱼在 j(li≤j≤ri) 处出现,这名粉丝将立刻发现并膜他。
小鱼希望膜他的人越多越好,但是他不能分身,因此只能选择一个位置出现。
小鱼想知道自己最多能被多少个人膜。
粉丝们得知小鱼将会在一条直线上出现,打算去膜他。为了方便,粉丝们在这条直线上建立数轴。
第 i 名粉丝有一个侦查区间[li,ri] 。如果小鱼在 j(li≤j≤ri) 处出现,这名粉丝将立刻发现并膜他。
小鱼希望膜他的人越多越好,但是他不能分身,因此只能选择一个位置出现。
小鱼想知道自己最多能被多少个人膜。
输入
第一行一个整数n —— 粉丝的个数。
接下来 n 行,每行两个整数 li,ri ,分别表示第 i 名粉丝的侦查区间的两个端点。两个数之间用空格隔开。
接下来 n 行,每行两个整数 li,ri ,分别表示第 i 名粉丝的侦查区间的两个端点。两个数之间用空格隔开。
输出
共一行,一个整数,表示小鱼最多能被多少人膜。
样例输入 Copy
4
3 5
4 8
1 2
5 10
样例输出 Copy
3
提示
样例解释:
如图所示,小鱼可出现在5处,此时第1,2,4号粉丝可以膜他。小鱼最多只能被3个粉丝膜。
对于20%的数据,n≤2
对于60%的数据,n≤2000
对于100%的数据,1≤n≤5×104,1≤li≤ri<230
如图所示,小鱼可出现在5处,此时第1,2,4号粉丝可以膜他。小鱼最多只能被3个粉丝膜。
对于20%的数据,n≤2
对于60%的数据,n≤2000
对于100%的数据,1≤n≤5×104,1≤li≤ri<230
#include <iostream> #include <algorithm> using namespace std; const int N = 200; int n, m; int a[N]; int main(){ cin >> n >> m; for (int i = 1; i <= n; i ++ ) cin >> a[i]; int l = 1, r = n, res = 0; while (l <= n){ if (a[l] >= m) break; res ++; l ++; } while (r > l){ if (a[r] >= m) break; res ++; r --; } cout << res << endl; return 0; }