1 条题解

  • 1
    @ 2024-1-14 12:55:33
    #include <bits/stdc++.h>
    #define ll long long
    using namespace std;
    const int N=200005;
    int n,m,k,s,a[N],q;
    ll sum[N],v,t,L;
    int check(int x){//使用x个魔法能不能让到达时间大于t 
    	return L+sum[n]-sum[n-x]>t*v;//总路程>t*v 
    }
    int main()
    {
    	cin>>n>>L>>v;
    	for (int i=1;i<=n;++i) cin>>a[i];
    	sort(a+1,a+1+n);
    	for (int i=1;i<=n;++i) sum[i]=sum[i-1]+a[i];
    	cin>>q;
    	while (q--){
    		cin>>t;
    		int l=0,r=n,mid;
    		while (l<=r){
    			mid=(l+r)/2;
    			if (check(mid)) r=mid-1;
    			else l=mid+1;
    		}
    		cout<<(l>n?-1:l)<<"\n";
    	} 
    }
    
    • 1

    信息

    ID
    654
    时间
    1000ms
    内存
    128MiB
    难度
    6
    标签
    递交数
    224
    已通过
    70
    上传者