POJ – 1064 Cable master

题目大意:给你n段不同长度的绳子(棍子),然后让你将这么n个绳子一共取长度相同的k段,问你每段最大有多长。

解:简单的二分查找呀(゚▽゚)
但!我居然WA了三遍!!!
我的天,这题我一开始没注意数据把查找区间设的太大,TLE了一遍,
再然后,最后输出的最大长度的精度没有处理,又WA了一遍,
最后又不可描述的WA了一遍 Σ( ° △ °|||)

ps.稍微吐槽一下,poj的数据好水啊,我的r开的那么小居然都能过样例(⊙ˍ⊙)

#include<cstdio>
#include<cstring>
#include<iostream>
#include<cmath>
using namespace std;
int n,k;
double a[100005];

bool search(double x)
{
    int sum=0;
    for(int i=0;i<n;i++)
        sum+=(int)(a[i]/x);
    return sum>=k;
}

void solve()
{
    double l=0,r=100005;
    for(int i=0;i<100;i++)
    {
        //cout<<r;
        double mid = (l + r) / 2;
        if(search(mid))
            l=mid;
        else
            r=mid;

    }
    printf("%.2lf\n",floor(r*100)/100);//千万不要忘了精度的问题!!!
}

int main()
{
    scanf("%d%d",&n,&k);
    for(int i=0;i<n;i++)
        scanf("%lf",&a[i]);
    solve();
}