蒟蒻60分求助,为啥我的upper_bound会炸?
查看原帖
蒟蒻60分求助,为啥我的upper_bound会炸?
108852
天涯狂生楼主2021/9/6 15:48
#include<bits/stdc++.h>
using namespace std;
#define maxn 100010
int n,a[maxn],q[maxn],siz[maxn],top;
int main()
{
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
		scanf("%d",&a[i]);
	sort(a+1,a+n+1);
	for(int i=1;i<=n;i++)	
	{
/*		for(int j=1;j<=top;j++)
			cout<<q[j]<<' ';
		cout<<endl;*/
		int pos=upper_bound(q+1,q+1+n,a[i])-q-1;
		if(pos>top) pos=top;
		if(q[pos]==a[i]) q[pos]++,siz[pos]++;
		else q[++top]=a[i]+1,siz[top]++;
	}
	int ans=0x7ffffff;
	for(int i=1;i<=top;i++)
		ans=min(siz[i],ans);
	cout<<ans;
	return 0;
}

用数据 4 1 1 2 2去测就会炸

明明中间q数组已经刷新但pos就是会越界

2021/9/6 15:48
加载中...