ネットワークケーブル監視

説明
ワンダーランドの居住者は、地域のプログラミングコンテストを主催することを決定しました。審判委員会は完全に任意であり、歴史上最も公正な試合を組織することを約束します。彼らは、スター型トポロジーでプレーヤーのコンピューターを接続することに決めました。つまり、プレーヤーをすべて単一の中央サーバーに接続することにしました。この完全に公正なゲームを編成するために、審判委員会の委員長は、すべてのプレーヤーのコンピューターをサーバーの周囲に等距離に配置することを提案しました。

ネットワークケーブルを購入するために、審判委員会はローカルネットワークソリューションプロバイダーに連絡し、一定数の同じ長さのネットワークケーブルを提供するように求めました。審判委員会は、ネットワークケーブルが長いほど良いことを望み、プレーヤー間の距離を可能な限り遠ざけることができます。

同社のネットワークケーブル管理者がこの仕事を引き受けました。彼は在庫内の各ワイヤーの長さ(センチメートルに正確)を知っており、ワイヤーの長さ(センチメートルに正確)を伝えさえすれば、ワイヤーの切断を完了することができます。ただし、今回は必要なネットワークケーブルの長さが不明であるため、ネットワークケーブルマネージャーが失われました。

ネットワークケーブルのスーパーバイザが最長のネットワークケーブル長を決定し、指定された数のネットワークケーブルを取得できるように、この長さに従ってネットワークケーブルの在庫をカットするプログラムを作成する必要があります。

入力
最初の行には、1つのスペースで区切られた2つの整数NおよびKが含まれています。N(1 <= N <= 10000)はインベントリ内のネットワークケーブルの数であり、K(1 <= K <= 10000)は必要なネットワークケーブルの数です。
次のN行(各行の番号)は、インベントリ内の各ネットワークケーブルの長さです(単位:メートル)。すべてのネットワークケーブルの長さは1m以上、100km以下です。入力の長さはすべてセンチメートルまで正確です。つまり、小数点以下2桁まで保持されます。
出力
ネットワークケーブルスーパーバイザーは、在庫のネットワークケーブルから、指定された数のネットワークケーブル(単位:メートル)の最大長を切り取ることができます。センチメートルまで正確でなければなりません。つまり、小数点第2位まで保持されます。
指定された数のネットワークケーブルを1cm以上の長さで入手できない場合は、 "0.00"(引用符なし)を出力する必要があります。
入力例
4 11
8.02
7.43
4.57
5.39
出力例
2.00

#include <iostream>
using namespace std;
int sz[10010];
int l = 0, r = 1E7, n, k;

int main() {
    double temp;
    scanf("%d %d", &n, &k);
    for (int i = 0; i < n; ++i) {
        scanf("%lf", &temp);
        sz[i] = temp * 100;
//        printf("%d",sz[i]);
    }
    while (l < r) {
        int mid = (l + r + 1) / 2;
        int num = 0;
        for (int i = 0; i < n; ++i) {
            num += sz[i] / mid;
        }
        if (num >= k) {
            l = mid;
        } else {
            r = mid - 1;
        }
    }
    printf("%.2lf", l / 100.0);
}
163の元の記事を公開 18を賞賛 7683を訪問

おすすめ

転載: blog.csdn.net/xcdq_aaa/article/details/105455034