不会还有原始入真手搓二分吧
2024-11-10 12:06:08
发布于:广东
14阅读
0回复
0点赞
std::lower_bound和std::upper_bound秒了
#include <iostream>
#include <cstdio>
#include <algorithm>
#define arr a + 1, a + n + 1, val
#define f(idx) (*idx != val || idx <= a || idx > a + n ? -1 : idx - a)
using namespace std;
int a[100005];
int main(){
cin.tie(nullptr) -> sync_with_stdio(0);
cout.tie(nullptr) -> sync_with_stdio(0);
int n, m;
cin >> n;
for(int i = 1; i <= n; i++) cin >> a[i];
cin >> m;
while(m--){
int val;
cin >> val;
int *idx1 = lower_bound(arr), *idx2 = upper_bound(arr) - 1, *idx3 = upper_bound(arr);
cout << f(idx1) << ' ' << f(idx2) << ' ' << (idx3 > a + n ? -1 : idx3 - a) << '\n';
}
return 0;
}
全部评论 6
顶
2024-11-10 来自 广东
0顶
2024-11-10 来自 广东
0顶
2024-11-10 来自 广东
0顶
2024-11-10 来自 广东
0顶
2024-11-10 来自 广东
0顶
2024-11-10 来自 广东
0
有帮助,赞一个