思路:忍耐时间短的排在前面,从小到大排序,贪心模拟,记录当前等待时间,如过等待时间大于当前的这个人得忍耐时间,那么就把这个人扔到最后面,不要管他了(哼╭(╯^╰)╮,谁叫你那么没耐心呢),所以也就不用记录为他服务的时间。
代码:
#include<bits/stdc++.h> using namespace std; #define ll long long #define pb push_back #define mem(a,b) memset((a),(b),sizeof(a)) const int N=1e5+5; int t[N]; int main() { ios::sync_with_stdio(false); cin.tie(0); int n; cin>>n; for(int i=0;i<n;i++)cin>>t[i]; sort(t,t+n); int sum=0,cnt=0; for(int i=0;i<n;i++) { if(sum<=t[i])cnt++,sum+=t[i]; } cout<<cnt<<endl; return 0; }