- 关掉freopen
- 二分时`r=mid`
- r 最好在二分之前再加1
- check中的o最好换成long long
- check 中的`line[i]>o` 改成 `line[i]>=o`
by Kanade @ 2017-11-09 23:19:50
```cpp
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int n,m;long long r=0, line[10010];
inline bool check(long long o)
{
long long tot=0;
if(o==0) return 1;
for(int i=1;i<=n;i++)
{
if(line[i]>=o)
tot+=line[i]/o;
if(tot>=m) return 1;
}
return 0;
}
int main()
{
// freopen("in.txt","r",stdin);
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
{
double p;
scanf("%lf",&p);
p=p*100.00;
line[i]=(long long) p;
r+=line[i];
}
sort(line+1,line+n+1);
long long l=-1;
r++;
while(l+1<r)
{
long long mid=(l+r)>>1;
if(!check(mid)) {
r=mid;
}
else l=mid;
}
printf("%.2lf",(double)l/100.00);
return 0;
}
```
已AC
by Kanade @ 2017-11-09 23:23:31
**和题解一样**~~却只A一个.~~
为何?
by Anyexyz @ 2019-11-08 10:33:03