特判加了,但还是90....
#include<bits/stdc++.h>
using namespace std;
const int N =1e6+10;
#define int long long
int vis[N],a[N];
priority_queue<int,vector<int>,greater<int> >q;
signed main()
{
int n,maxx=-INT_MAX,minn=INT_MAX<<1;
cin>>n;
for(int i=1,x;i<=n;i++)
{
cin>>x,q.push(x);
a[i]=x;
minn=min(minn,x);
}
int m;
cin>>m;
if(m<minn)
{
cout<<"0"<<endl;
return 0;
}
for(int i=1;i<=n;i++)
{
if(a[i]<m)
maxx=max(maxx,a[i]);
}
int sum=0,ans=0;
bool flag=false;
while(!q.empty())
{
int now=q.top();
if(now==maxx&&flag==false)
{
flag=true;
q.pop();
continue;
}
if(sum+now<=maxx)
{
sum+=now;
ans++;
q.pop();
}
else
break;
}
cout<<ans<<endl;
}