Socket

Socket

https://ac.nowcoder.com/acm/problem/14333

题目描述
玻璃小屋内有n个插排,屋内有 m 个需要供电的机器,并且墙上有k个可以直接使用的插口。知道了每个插排上的插口的个数,并且所有的插头和插口都是可以匹配的。问你最少用几个插排可以让所有机器都供上电?
输入描述:
多组测试数据,每组第一行输入n, m, k。(1≤ n, m, k ≤50)
第二行有n个数,分别表示每个插排上插口的个数。
输出描述:
输出最少需要几个插排。如果有电器无法充上电则输出-1。
每组输出占一行。

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

bool cmp(int a,int b){
    return a>b;
}
int main(){
    int n,m,k,socket[60];
    while(cin>>n>>m>>k){
        int flag=0;
        for(int i=0;i<n;i++){
            cin>>socket[i];
        }
        sort(socket,socket+n,cmp);
        if(k>=m){
            cout << "0"<<endl;
            continue;
        }
        int sum=k;        
        for(int i=0;i<n;i++){
            sum=sum+socket[i]-1;
            if(sum>=m){
                cout << i+1 <<endl;
                flag=1;
                break;
            }
        }
        if(flag==0) cout << "-1"<<endl;
    }
    return 0;
}
全部评论

相关推荐

不愿透露姓名的神秘牛友
10-05 10:13
已编辑
HHHHaos:让这些老登来现在秋招一下,简历都过不去
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务