编程题
### 问题描述
你是一个冒险家,在一个危机四伏的森林里,你发现了一个隐藏的食物仓库。这个食物仓库由 $n$ 个房间组成,每个房间都有一定数量的食物。你需要找到第一个房间,其中的食物数量大于或等于一个给定的值 $x$。
这些房间是按食物数量升序排列的。你知道每个房间的食物数量,但由于时间紧迫,你不能一个个房间地去查找。因此,你决定使用二分搜索来快速找到目标房间。
你的任务是编写一个程序,根据每个房间的食物数量和目标值 $x$,输出第一个食物数量大于或等于 $x$ 的房间的编号。
### 输入格式
第一行包含一个整数 $n$,$(1 \leq n \leq 10^5)$,表示房间的数量。
第二行包含 $n$ 个整数,表示每个房间的食物数量。这些整数是非降序排列的。
第三行包含一个整数 $x$,$( 1 \leq x \leq 10^9)$,表示目标食物数量。
### 输出格式
输出一个整数,表示第一个食物数量大于或等于 $x$ 的房间的编号。如果所有房间的食物数量都小于 $x$,则输出 $-1$。
### 样例输入
```
5
2 5 8 10 15
9
```
### 样例输出
```
4
```
### 样例说明
在上述例子中,房间 $4$ 的食物数量为 $10$,这是第一个大于或等于 $9$ 的值。
### 测评数据规模
对于 $100$% 的数据,$1 \leq n \leq 10^6$,并且每个房间的食物数量不超过 $10^9$。