题解 | 小红的口罩

小红的口罩

https://www.nowcoder.com/practice/fde642522d664b49a10fe9de51686026

#include<bits/stdc++.h>
using namespace std;


int main(){

    int n;
    long long k;
    cin>>n>>k;
    long long sum=0;//不适度总和
    priority_queue<long long, vector<long long>, greater<long long>> heap;
    int a[100000];
    for(int i=0;i<n;i++){
        long long a;
        cin>>a;
        heap.push(a);//入堆
    }

    int day=0;
    while(!heap.empty()){
        long long current_min = heap.top();
        heap.pop();//取出最小值
        if(sum + current_min > k ){//没有口罩可用了
            break;
        }

        sum+=current_min;
        day++;
        heap.push(current_min*2);//翻倍后再入堆
    }

    cout<<day<<endl;

}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务