问个问题
查看原帖
问个问题
88336
帅气的何安逸楼主2021/2/28 22:25

哪里错了啊

#include <bits/stdc++.h>
#define ll long long
using namespace std;
ll n, l, c, ans;
double endsec;
ll v[100005];
bool check(ll i, ll j){
    ll dif=v[i]-v[j];
    if(dif==0) return 0;
    if(double(c/dif)>endsec) return 0;
    return v[i]*c<=l*c*dif;
}
int main() {
    cin>>n>>l>>c;
    for(int i=1;i<=n;i++){
        cin>>v[i];
    }
    sort(v+1, v+n+1);
    endsec=l*c/v[n];
    for(ll i=n;i>0;i--){
        ll left=1, right=i-1, sp=-1;
        while(left<=right){
            ll mid=(left+right)>>1;
            if(check(i, mid)){
                sp=mid;
                left=mid+1;
            }
            else right=mid-1;
        }
        if(sp!=-1){
            ans+=sp;
        }
    }
    cout<<ans<<endl;
    return 0;
}

2021/2/28 22:25
加载中...