poj 1064

来源:互联网 发布:sql msde 编辑:程序博客网 时间:2024/06/07 16:06

二分查找

#include <iostream>#include <math.h>using namespace std;const int MAXN = 10005;const int INF = 100005;int n, k;double l[MAXN];bool C(double x) {int num = 0;for(int i=0; i<n; i++)num += (int)(l[i]/x);return num >= k;}int main() {scanf("%d%d", &n, &k);for(int i=0; i<n; i++)scanf("%lf", &l[i]);double lowBound = 0;double upperBound = INF;for(int i=0; i<100; i++) {double middle = (lowBound + upperBound) / 2;if(C(middle))lowBound = middle;elseupperBound = middle;}printf("%.2f\n", floor(upperBound * 100) / 100);return 0;}


0 0