题目大意
给你若干数,让你分成若干组,每组两个,如果一组数中大的数大于等于小的数的两倍,那么有一点贡献,问贡献最大是多少
解题思路
先排序,然后分为大小两组,双指针看可以合多少组
code
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define ll long long
#define N 500050
using namespace std;
int n,ans,now,a[N];
int main()
{scanf("%d",&n);for(int i=1;i<=n;++i)scanf("%d",&a[i]);sort(a+1,a+1+n);now=n/2+1;ans=n;for (int i=1;i<=n/2;++i){while(a[i]*2>a[now]&&now<=n)now++;//双指针if(now>n)break; now++;ans--;}printf("%d",ans);return 0;
}