问题标题: 1781 检票进站

1
0
已解决
梁锦程
梁锦程
高级光能
高级光能

1781 检票进站

#include<iostream>
using namespace std;
int n,m,a[100001];  
int main()
{
    int i,j,min1=1e9+1,max1=0,l=1,r,mid;
    cin>>n>>m;
    for(i=1;i<=n;i++)
    {
        cin>>a[i];
        max1=max(max1,a[i]);
    }
    r=max1*m;
    while(l<=r)
    {
        mid=(l+r)/2;
        int ans=0;
        for(i=1;i<=n;i++)
            ans+=(mid/a[i]);
        if(ans>=m)
        {
            min1=min(min1,mid);
            r=mid-1;
        }
        if(ans>m)
            r=mid-1;
        else if(ans<m)
            l=mid+1;        
    }
    cout<<min1<<endl;
    return 0;
}

50分,哪里有问题?


0
0
0
王星河
王星河
资深光能
资深光能

可能是二分查找的边界错了

0
0
我要回答