AGC011 B - Colorful Creatures(思维)

题意:

在这里插入图片描述

解法:

对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;
}

猜你喜欢

转载自blog.csdn.net/weixin_44178736/article/details/114845710