‹ 上一题 下一题 ›

g5-08314. 插入位置 未做

1000 ms 256 MB 测试点 10 GESP-55级·STLalgorithm

题目描述

给定一个升序数组(可能有重复)和 次询问。每次询问给出一个整数 :如果把 插进数组并保持升序,最左能插到第几个位置?(位置从 数起;等价于问:第一个 的元素排在第几位。)若所有元素都小于 ,输出 。

这正是 lower_bound 的定义:在已升序的区间里返回指向第一个 的元素的迭代器,减去 v.begin() 加一就是位置。它用二分实现,单次只要 , 次询问也扛得住。

输入格式

第一行两个整数 、()。

第二行 个整数 (升序,)。

接下来 行,每行一个整数 ()。

输出格式

行,每行一个整数:最左插入位置(从 数起);全部元素小于 时输出 。

样例

输入:

5 3
1 3 5 7 9
5
10
0

输出:

3
6
1

自己就在数组里,第一个 的正是它自己(第 3 位); 比谁都大只能排到 ; 比谁都小插在最前面。

数据范围

,数组升序。lower_bound 找「第一个 」,upper_bound 找「第一个 」——有重复元素时两者差得远,别拿错。

输入
输出

            
答案