题目描述
到过年了,狗熊岭的动物们都忙碌了起来,张灯结彩准备过年。李老板却要光头强砍一些百年美人松回去。美人松都是很高的,它们的高度不超过长整型。现在光头强看到丛林里有N棵美人松按照从矮到高的排好,当然每棵松的高度是已知的。李老板要问光头强M次,每次询问高度为K的美人松有多少棵。
输入
第一行两个正整数N和M,之间用一个空格隔开,1≤N≤106,1≤M≤1000。
第二行N个正整数,之间用一个空格隔开,表示N棵美人松的高度。
第三行M个正整数,之间用一个空格隔开,表示M个询问,每次询问高度为K的美人松有多少棵,1≤K≤1000。
输出
一行M个正整数,之间用一个空格隔开,分别表示对应每次询问高度为 K的树的数量,如果没有则输出0。
提示
//二分查找
int left=0,right=n-1,mid;
//找最左边的key的位置
while(left<=right){
mid=(right+left)/2;
if(a[mid]>k)right=mid-1;
else if(a[mid]<k)left=mid+1;
else{
aleft=mid;//记录当前key值的位置
right=mid-1;//将右边的边界往左移动
}
}