輸送

タイトルの説明

これで商品がインストールされました。引っ越し会社の上司であるB氏がやってきました。彼の誕生日は今日で、彼はとても幸せでした。当初は送料無料にすることを決めていましたが、いくつかの要因により、彼は考えを変えました。現在、N個の製品が知られていますが、それらを処理するためのコストもかかります。さて、B氏は2つのアイテムをランダムに選択することにしました。これら2つの製品を組み合わせて新しい製品を作成すると、取り扱いコストは、選択した2つの製品のコストの合計をKで割った結果になります。(Kはファイルから読み取られます)これは、1つのアイテムのみが受信されるまで繰り返されます。これは、ストアが支払う必要があるものです。店主はより多くのお金をホーププロジェクトに寄付するために、できるだけ少ない支払いを望んでいます。だから、少なくともいくらかかるか計算するのを手伝ってください。

入力

n、k

w1、w2、…、wn(各製品の運送費)

アウトプット

最低支払額を示す数値を出力します。

入力例

5 2 
1 2 3 4 5

出力例

1

プロンプト

n <= 10000、k <= 10000

コード

#pragma GCC optimize(1)
 #pragma GCC optimize(2)
 #pragma GCC optimize(3)
 #pragma GCC optimize( "Ofast")
#include <bits / stdc ++。h>
 #define rep(i、j、k)for (int int i =(j); i <=(k); ++ iを登録)
 名前空間std を使用 ; 
priority_queue < int > s;
int n、k; 
テンプレート < クラス T>インラインvoid read(T&x){ 
    x = 0 ; 
    登録文字 c = getchar(); ブール値を
    登録 f =0 ;
    while(!isdigit(c))f ^ = c == ' - '、c = getchar();
    while(isdigit(c))x = x * 10 + c- ' 0 '、c = getchar();
    if(f)x = -x; 
} 
int main(){ 
    read(n)、read(k); 
    rep(i、1 、n){ 
        register int x; 
        read(x); 
        s.push(x); 
    } 
    for(register int i = 1 ; i <n; i ++ ){ 
        register intバツ; 
        x = s.top(); 
        s.pop(); 
        x + = s.top(); 
        s.pop(); 
        x = x / k; 
        s.push(x); 
    } 
    cout << s.top()<< endl;
    0を返し ます
}

おすすめ

転載: www.cnblogs.com/LJA001162/p/12678588.html