- 猫と魚
PKUのキャンパスには多くのホームレス猫があります。PKUの猫クラブの学生が彼らの世話をので、彼らはすべて満足しています。李レイは、猫のクラブのメンバーの一人です。彼は非常に多く、それらの猫を愛しています。先週、彼は奨学金を獲得し、彼は猫と彼の喜びを共有したいと思いました。そこで彼は彼らを養うためにいくつかの本当においしい魚を買って、大きな喜びで食べて、それらを見ていました。同時に、彼は興味深い質問を見つけました:
そこメートルの魚とn猫があり、そしてそれは、c取る私 のiについて分を第 1の魚を食べて猫。猫は(それが1を得ることができる場合)、それは1匹の魚を終えた直後に別の魚を食べることを開始します。猫は他の猫とその魚を共有することはありません。十分な魚の左が存在しない場合は、より速く食べる猫が遅く食べる猫よりも魚を得るために高い優先度を持っています。すべての猫が同時に食べ始めます。李レイは、x分後に、どのように多くの魚が残されることになる、知りたいと思いました。
入力20以下のテストケースはありません。
各テストケースの場合:
上記m、nおよびX(0 <M <= 5000、1 <= N <= 100、0 <= X <= 1000):最初の行は、3つの整数を含みます。
二行目は、n個の整数Cが含ま1、C 2 ... Cのnは C、私は それが魚を食べるために、i番目の猫のCI分かかることを意味します(1 <= C iの = 2000 <)。
出力各テストケースについては、印刷2つの整数pとq、P完全な魚(全体の魚)とx分後に左のq不完全な魚があることを意味しています。
サンプル入力
2 1 1 1 8 3 5 1 3 4 4 5 1 5 4 3 2 1
サンプル出力
1 0 0 1 0 3
#include <ビット/ STDC ++ H> 名前空間STDを使用して、 NUM、[10000] C、CNT、B [10000] INT。 INTのmain() { int型M、N、X。 一方、(〜のscanf( "%D%D%D"、&M、およびN、およびX)) { ため(iは++; iがn = <I = 1 INT) { scanf関数( "%のD"、&C [I])。 } のmemset(B、0、はsizeof(b)参照)。 CNT = M。 NUM = 0; ソート(C + 1、C + N + 1)。 以下のために(; iは= xを<; I = 1 int型私は++) { ため(int型のJ = 1; J <= nであり、j ++) { IF(B [j] == 0) { cnt--。 { } B [j] = 0; NUM ++; } 他 { B [j]が1を=。 } (CNT == 0)であれば { 破ります。 } } (CNT == 0)であれば { 破ります。 } } int型ANS = 0。 以下のために(; iがn = <; iは1 = int型私は++) { IF(B [I] == 1) { ANS ++。 } printf( "%D%D \ n"は、M-NUM年、年)。 } }