结构体和lower_bound
  • 板块灌水区
  • 楼主RedWen_shuo
  • 当前回复4
  • 已保存回复4
  • 发布时间2024/8/19 21:25
  • 上次更新2024/8/20 08:47:28
查看原帖
结构体和lower_bound
947873
RedWen_shuo楼主2024/8/19 21:25
#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;
}

这代码是错误的,我想按照关键字 valval 进行二分, 有什么办法吗

2024/8/19 21:25
加载中...