【题目描述】
人生如白驹过隙,在有限的生命中,我们的生命将发挥价值。有的生命重于
泰山,有的生命轻于鸿毛。生命在时间的长河中奔腾向西,朝着胜利的曙光,朝
着明亮的前方,朝着希望的方向,奋斗着,坚持着,拼搏着。时光匆匆流去,是
流淌在指尖的黄沙,是滴在心头的回忆,更是让生命增光添彩的新衣。在这段时
光中,我们能干什么呢?我们是守株待兔,等候着成果降临;还是勇往直前,掀
起又一轮新的风浪?
现在有 n 个生命,第 i 个生命的起始时刻为 li ,结束时刻为 ri。现在有
m 个问题需要查询,每个问题形式如下:
1 x[i] :1 表示查询在 xi 前(不包含 xi)开始的生命的个数。
2 x[i] :2 表示查询在 xi 前(需包含 xi)结束的生命的个数。
因为自己手动查询太麻烦了,所以你需要写一个 c++程序来回答问题。对于
每个问题,输出一行一个整数表示答案。
【输入格式】
第一行两个空格分开的正整数 n 和 m,n 表示生命的个数,m 表示问题的个数。
第二行 n 个正整数 li,用空格隔开。li 表示第 i 个生命在第 li 时刻开始。
第三行 n 个正整数 ri,用空格隔开。ri 表示第 i 个生命在第 ri 时刻结束。
接下来 m 行,每行两个正整数 op 和 xi,用空格隔开,其中 op 的值只可能为 1
或 2,具体意义见题目描述。
【输出格式】
对于每个查询,输出一行一个整数表示答案。
输出共 m 行。
【输入样例】
5 3
1 4 5 2 3
2 7 9 4 3
1 9
2 9
1 3
【输出样例】
5
5
2
【数据范围】
1≤n,m≤100,1≤li≤ri≤106,1≤xi≤ri 的最大值。
code<代码>
#include<iostream>
using namespace std;
int l[110],r[110];
int main()
{
int n,m,op,xi,cnt=0;
int i,j;
cin>>n>>m;
for(i=1;i<=n;i++)
cin>>l[i];
for(i=1;i<=n;i++)
cin>>r[i];
for(i=1;i<=m;i++)
{
cnt=0;//要在每次查询时,计数器清零
cin>>op>>xi;
if(op==1)
{
for(j=1;j<=n;j++)
{
if(l[j]<xi)
cnt++;
}
cout<<cnt<<endl;
}
if(op==2)
{
for(j=1;j<=n;j++)
{
if(r[j]<=xi)
cnt++;
}
cout<<cnt<<endl;
}
}
return 0;
}