删除元素
时间限制:
1000 ms | 内存限制:
65535 KB
难度:
2
-
描述
-
题意很简单,给一个长度为n的序列,问至少删除序列中多少个数,使得删除后的序列中的最大值<= 2*最小值
#include<stdio.h>
#include<algorithm>
using namespace std;
int p[100005];
int B_search(int k,int n)
{
int l=k,r=n;
while(l<r)
{
int mid=(l+r)/2;
if(p[mid]>p[k]*2)
r=mid;
else
l=mid+1;
}
return n-r;
}
int main()
{
int n;
while(~scanf("%d",&n))
{
int i;
for(i=0; i<n; i++)
scanf("%d",&p[i]);
sort(p,p+n);
int ans=1e9+5;
for(i=0; i<n; i++)
{
int sum=i;
sum+=B_search(i,n);
printf("--->%d\n",B_search(i,n));
ans=min(ans,sum);
}
printf("%d\n",ans);
}
return 0;
}