代码如下:
#include<bits/stdc++.h>
using namespace std;
int n,L,v,q,t,ans,l,r,mid;
double a[200005],sum[200005]={0},s;
bool cmp(double x,double y) {return x>y;}
bool cheak(int x)
{
if (s+sum[x]>t) return 1;
else return 0;
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
cin>>n>>L>>v;s=L/v;
for (int i=1;i<=n;++i) cin>>a[i],a[i]/=v;
sort(a+1,a+n+1,cmp);
for (int i=1;i<=n;++i) sum[i]=sum[i-1]+a[i];
cin>>q;
while (q--)
{
cin>>t;
if (s>t) cout<<0<<endl;
else if (t>=s+sum[n]) cout<<-1<<endl;
else
{
l=0;r=n;
while (l<=r)
{
mid=l+r>>1;
if (cheak(mid)) r=mid-1,ans=mid;
else l=mid+1;
}
cout<<ans<<endl;
}
}
}
10个点全WA了,求助