BerSUでCodeForces 1185C1試験(簡単バージョン)(ソート、貪欲)

C1。BerSUでの試験(簡単バージョン)

テストあたりの時間制限

2秒

テストごとのメモリ制限

256メガバイト

入力

標準入力

出力

標準出力

簡単とハードのバージョン間の唯一の違いは、制約です。

セッションはBeland州立大学で始まりました。多くの学生が試験を取っています。

?名前空間接頭辞= [デフォルト] http://www.w3.org/1998/Math/MathML NS =「http://www.w3.org/1998/:ポリグラフPoligrafovichは、n個のグループ<XMLを調べるために起こっています数学/ MathMLの」/> nの学生。学生は11番目のNN番目から順に受験一つ一つがかかります。試験のルールは以下のとおりです。

  • II-番目の学生は、ランダムにチケットを選択します。
  • このチケットは、学生に硬すぎる場合、彼は答えると、すぐに帰宅していません(このプロセスは、それが無い時間が経過すると考えられていますことを非常に高速です)。この学生は試験に失敗しました。
  • 学生が簡単にチケットを見つけた場合、彼は試験に合格するために、正確ティティ分を費やしています。それの後、彼はすぐにマークを取得して帰宅します。

学生は中断することなく、1つずつ、一定の順序で試験を受けます。時間の任意の時点で、ポリグラフPoligrafovichは、一人の学生からの回答をとります。

リストの最後に、学生が試験に合格するために、時間外に実行するための大きな可能性を持っているように、すべての学生のための全体試験の期間は、MM分(maxti≤Mmaxti≤M)です。

各学生IIについて、あなたはII番目の生徒が試験に合格するのに十分な時間を持っているので、試験に失敗する必要があり、学生の最小限の数をカウントする必要があります。

各学生IIについて、独立して答えを見つけます。i2i2(I2> i1i2> I1)のための答えを見つけることながら、いくつかの学生のJJは去るべきでi1i1学生のための答えを見つけたときに、学生のJJの学生が家に帰る必要がない場合には、あります。

入力

それぞれ、学生の数と分で試験の全持続時間 - 入力の最初の行は、NN及びMM(1≤n≤1001≤n≤100、1≤M≤1001≤M≤100)は、2つの整数を含みます。

II-番目の学生はチケットに答えるために費やす時間(分) - 入力の2行目はNN整数ティティ(1≤ti≤1001≤ti≤100)が含まれています。

ティティの全ての値がMMより大きくないことを保証しています。

出力

番号nnを印刷:II番目の数は、II-番目の生徒に順番に試験を残している学生の最小数は、試験に合格するのに十分な時間を持っているに等しくなければなりません。

入力

コピー

7 15 
1 2 3 4 5 6 7

出力

コピー

0 0 0 0 0 2 3 

入力

コピー

5 100 
80 40 40 40 60

出力

コピー

0 1 2 3 
最初は値をのSumNするために、各サイクルが0に設定された後に忘れているので、それはWAてきました
コードは以下の通りであります:
書式#include <iostreamの> 
の#include <cstdioを>
 使用して 名前空間はstdを、
INT のmain(){
     int型N、M。
    INT [ 100 ]。
    int型私は、
    int型の合計= 0 ;
    int型のSumN = 0 ; 
    scanf関数(" %d個の%のD "、&​​N、&M)。
        (i = 1 ; iが<= N; iは++ ){ 
            scanf関数(" %のD "、および[I])。
        } 
        のための(I = 1; I <= N。I ++ ){ 
            のSumN = 0// 开始漏了这一步... 
            合計+ = A [i]は、
            もし(合計<= M){ 
                のprintf(" 0 " )。
                もし(!I = N)
                    のprintf("  " );
                もし(I == N)
                    のprintf(" \ nを" ); 
            } 
            { 
            
                ためINT J = 1 ; J <= I - 2; J ++ ){
                     ためのint型のk = 1 ; K <= I - 、J - 1 ; ++ k個){
                         場合([K]> [K + 1 ]){
                             int型の TEMP = [K]。
                            [k]が [K + = 1 ]。
                            [K + 1 ] = TEMP。
                        } 
                    } 
                } 
                のためのINT S = 1 ; S <= I - 1 ; S ++){
                    SumN + = A [S]。
                    もし((のSumN + [I]> M)&&(のSumN - [S] + [I] <= M)){ 
                        のprintf(" %dの"、I - S)。
                        もし(!I = N)
                            のprintf("  " );
                        もし(I == N)
                            のprintf(" \ nを" ); 
                    } 
                } 
            } 
        } 
    戻り 0 
}

おすすめ

転載: www.cnblogs.com/jianqiao123/p/11221135.html