这是一个最基本的模板
#include <iostream>
using namespace std;
int main()
{
int n, q;
int a[100000]; // 定义一个大小为100000的数组来存储输入的整数
// 输入数组长度n和查询次数q
cin >> n >> q;
// 输入数组a中的元素
for (int i = 0; i < n; i++) {
cin >> a[i];
}
// 处理每个查询
while (q--) {
int x;
cin >> x; // 输入要查找的值x
// 查找x在数组中的左边界
int left = 0, right = n - 1;
while (left <= right) {
int mid = (left + right) / 2; // 计算中间位置
if (a[mid] >= x) {
right = mid - 1; // 如果中间值大于等于x,则右边界收缩到mid-1
} else {
left = mid + 1; // 否则,左边界移动到mid+1
}
}
// 检查是否找到了x
if (left >= n || a[left] != x) {
cout << "-1 -1" << endl; // 如果未找到,输出-1 -1
} else {
cout << left << " "; // 输出左边界索引
// 查找x在数组中的右边界
left = 0, right = n - 1;
while (left <= right) {
int mid = (left + right) / 2; // 计算中间位置
if (a[mid] <= x) {
left = mid + 1; // 如果中间值小于等于x,则左边界扩展到mid+1
} else {
right = mid - 1; // 否则,右边界收缩到mid-1
}
}
cout << right << endl; // 输出右边界索引
}
}
return 0;
}