社区讨论
结构体和lower_bound
灌水区参与者 3已保存回复 4
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 4 条
- 当前快照
- 1 份
- 快照标识符
- @m0113w4d
- 此快照首次捕获于
- 2024/08/19 21:25 2 年前
- 此快照最后确认于
- 2025/11/04 23:01 4 个月前
CPP
#include<bits/stdc++.h>
typedef long long ll;
using namespace std;
template<typename T>void re(T&x){x = 0; int sign = 1; char c; do{c = getchar(); if (c == '-') sign = -1;}while(!isdigit(c));do{x = x * 10 + c - '0'; c = getchar();}while(isdigit(c)); x *= sign;}
void write(int x){if (x < 0) putchar('-'); else if (x < 10) putchar(x + '0'); else write(x / 10), putchar(x % 10 + '0');}
struct node{int id, val;}a[3000000];
int n;
bool cmp(node x, node y){
return x.val < y.val;
}
int main(){
re(n);
for (int i = 1, x; i <= n; i ++){re(a[i].val), a[i].id = i;}
sort(a + 1, a + 1 + n, cmp);
int m;
re(m);
while (m --){
int x; re(x);
auto it = lower_bound(a + 1, a + 1 + n, x);
if (it == a + 1 + n) puts("-1");
else printf("%d\n", it -> id);
}
return 0;
}
这代码是错误的,我想按照关键字 进行二分, 有什么办法吗
回复
共 4 条回复,欢迎继续交流。
正在加载回复...