1 条题解

  • 0
    @ 2026-5-9 13:06:43

    这个被HACK了,T了一个点

    时限好像放宽了,突然就能过了

    #include<bits/stdc++.h>
    using namespace std;
    const int N=3e5+10;
    int n,a[N];
    inline bool pd(int x)
    {
    	set<int>s;int sum=0;
    	for(int i=1;i<=n;i++)
    		if(a[i]<=x&&s.count(a[i])==0)
    		{
    			sum++;
    			s.insert(a[i]);
    		}
    	if(2*(x-sum)<=n-sum)return 1;
    	return 0;
    }
    int main()
    {
    	scanf("%d",&n);
    	for(int i=1;i<=n;i++)scanf("%d",&a[i]);
    	int l=0,r=n+1,mid,ans=0;
    	while(l<r)
    	{
    		mid=(l+r)>>1;
    		if(pd(mid))ans=max(ans,mid),l=mid+1;
    		else r=mid;
    	}
    	printf("%d\n",ans);
    	return 0;
    }
    
    • 1

    信息

    ID
    10028
    时间
    4000ms
    内存
    1024MiB
    难度
    8
    标签
    递交数
    35
    已通过
    5
    上传者