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