二分查找
int main() {
     scanf("%d %d", &n, &m);
     double l = 0, r = 0;
     for (int i = 1; i <= n; i++) {
         scanf("%d", &cows[i]);
         r = std::max(r, (double)cows[i]);
     } //最小左区间 最大右区间
    while(r - l > 1e-5) { //开始二分 因为是实数所以这里还搞个精度
         double mid = (l + r) / 2; // 不是>>1 这里是实数
         if(check(mid)) l = mid; //将问题转变为判定问题
         else r = mid;
     } printf("%d\n", (int)(r * 1000)); //因为我们找的极大值 所以要右端点*1000 否则可能会出错
     return 0; 
 }
排序问题等等。










