FatMouse」展覧会
時間制限:2000/1000 MS(Javaの/その他)メモリ制限:32768分の65536 K(Javaの/その他)の合計提出(S):33442受理提出(S):10862
問題の説明
FatMouseは彼の好きな食べ物、JavaBeansを含む倉庫を守る猫と取引する準備ができて、キャットフードのMのポンドを用意しました。
倉庫は、N客室を提供しています。i番目の部屋は、JavaBeansのJ [i]はポンドが含まれており、[I]は、キャットフードポンドFが必要です。FatMouseではなく、彼が得ることができ、部屋の中のすべてのJavaBeansのために取引する必要はありませんJ [i]は*のJavaBeansの%のポンド彼はFを支払う場合は、[I] *猫の餌の%ポンド。ここでは実数です。今、彼はあなたに、この宿題を割り当てている。彼に彼が得ることができたJavaBeansの最大量を教えてください。
倉庫は、N客室を提供しています。i番目の部屋は、JavaBeansのJ [i]はポンドが含まれており、[I]は、キャットフードポンドFが必要です。FatMouseではなく、彼が得ることができ、部屋の中のすべてのJavaBeansのために取引する必要はありませんJ [i]は*のJavaBeansの%のポンド彼はFを支払う場合は、[I] *猫の餌の%ポンド。ここでは実数です。今、彼はあなたに、この宿題を割り当てている。彼に彼が得ることができたJavaBeansの最大量を教えてください。
入力
入力は複数のテストケースから構成されています。各テストケースは、2つの非負整数MおよびNは、次にN行が続く含む行で始まり、それぞれがJ [i]およびF [i]がそれぞれ二つの非負整数を含みます。最後のテストケースは2 -1のが続いています。すべての整数は1000年より大きくありません。
出力
各テストケースのために、一列にFatMouseを得ることができるのJavaBeansの最大量である3つの小数点の実数正確アップを印刷。
サンプル入力
5 3 7 2 3 4 5 2 20 3 25 18 24 15 15 10 -1 -1
サンプル出力
13.333 31.500
ACコード+詳細な説明:
-
#含める<iostreamの> //貪欲
-
#含める<cstdioを> //タイトルの意味:FatMouseマウスは、マウスのような多くの倉庫や各為替レートの倉庫内メートルのグラムの猫の餌とキャットフードで自分の好きな食べ物を交換すると同じではありませんが、それぞれの為替レートJ [i]はFに対するG猫[i]は、食品(iは層の数です)
-
#含める<CStringの>
-
const
int型
MAX =
10001
;
-
INT
J [MAX]。
-
INT
F [MAX]。
-
ダブル
P [MAX]。
-
使用して
名前空間
はstdを
、
-
int型 の主()
-
{
-
整数
N、M、I、J。
-
二重の
合計;
-
一方、
(
CIN
>> M >> N &&(M!=
-1
&& N!=
-1
))
-
{
-
以下のための
(iは=
1
; I <= N; I ++)
-
{
-
CIN
>> J [i]は>> F [i]は、
-
P [I] = ダブル(J [I])/ F. [I]; //各為替レート
-
}
-
合計= 0 ;
-
しばらく
(M!=
0
&& N-!=
0
)
猫// 0または食品は蚊帳の外です0
-
{
-
int型
のk;
-
ダブル
マックス=
-1
;
-
ための
式(I =
1
; I <= N; I ++)
//各々は、層の最大数(部屋)の割合となるように選択します
-
{
-
もし
(P [i]が>最大)
-
{
-
マックス= P [i]は、
-
K = I。
-
}
-
}
-
IF
(mFでの[K]> =
0
)
//だけキャットフードまたは残りがある場合
-
{
-
F. = M- [K]; //必要減算猫
-
+ J = SUM [K]; //食品交換に追加
-
P [K] = 0 ; 0を超える為替レートに対する//層-なし
-
}
-
他の
猫が十分でない場合は、すべての交換食品に猫の餌の残りの部分を使用して//
-
{
-
+ P = SUM [K] * M; //すべての食品交換
-
= M 0 ; //償還が完了すると、猫の餌が0であることを確認してください-アウトループの
-
}
-
}
-
printf
(
"%.3lf \ N-"
、SUM);
//出力
-
}
-
リターン
0
;
-
}