题意:
解法:
对a[i]从小到大排序,计算出前缀和sum[].
吃的时候一定是按照从小到大一路吃过来,当sum[i]*2<a[i+1]时,[1,i]肯定全部不可能留到最后.
找到右边开始第一个满足sum[i]*2<a[i+1]的位置,那么[i+1,n]就是答案.
code:
#include <bits/stdc++.h>
#define int long long
#define PI pair<int,int>
using namespace std;
const int maxm=2e6+5;
int sum[maxm];
int a[maxm];
int n;
void solve(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
sort(a+1,a+1+n);
for(int i=1;i<=n;i++){
sum[i]=sum[i-1]+a[i];
}
a[n+1]=0;
for(int i=n;i>=1;i--){
if(sum[i]*2<a[i+1]){
cout<<n-(i+1)+1<<endl;
return ;
}
}
cout<<n<<endl;
}
signed main(){
ios::sync_with_stdio(0);
solve();
return 0;
}