求助站外题
  • 板块学术版
  • 楼主Vizzi_02
  • 当前回复3
  • 已保存回复3
  • 发布时间2022/1/24 21:09
  • 上次更新2023/10/28 11:15:59
查看原帖
求助站外题
341396
Vizzi_02楼主2022/1/24 21:09

 给定一个长为N的严格升序序列a(a[0], a[1] ... a[N-1])。有M个询问,每个询问有一个参数x,求最小的i(0<=i<N)使a[i]>x,若不存在则为-1。

#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
int a[500000];
int main()
{
	int n,m;
	cin >> n >>m;
	for(int i = 0;i < n;i++)
	{
		cin >> a[i]; 
	} 
	sort(a,a+n);
	for(int i = 1;i <= m;i++)
	{
		int k;
		cin >> k;
		int idx = upper_bound(a,a+n,k)-a;
		if(idx == n)
		{
			cout <<-1<<endl;
		}
		else
		{
			cout << idx << endl; 
		}
	}
	return 0; 
} 

我写的二分查找为啥t了一组

最后一组数据为N = 10^6,M = 10^5

2022/1/24 21:09
加载中...