求调Mex板子
查看原帖
求调Mex板子
482610
Mortidesperatslav楼主2023/9/17 14:08

rt。

#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,a[1000005],mx=0;
int sch(int k){
	int l=1,r=n,ans;
	while(l<=r){
		int mid=(l+r)>>1;
		if(a[mid]>=k)ans=mid,r=mid-1;
		else l=mid+1;
	}
	if(a[ans]==k)return ans;
	else return -1;
}
signed main(){
	ios_base::sync_with_stdio(false);
	cin.tie(0);cout.tie(0);
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i];
		mx=max(mx,a[i]);
	}
	int l=0,r=mx+1,ans;
	while(l<=r){
		int mid=(l+r)>>1;
		int p=sch(mid);
		if(p==mid+1)ans=mid,l=mid+1;
		else r=mid-1;
	}
	cout<<ans+1;
}
2023/9/17 14:08
加载中...