#include using namespace std; int main(){ long long r,p,q; vectorcoder (4); cin >> r >> p >> q; for(int i=0;i<4;i++) cin >> coder[i]; //二分探査で最大値を絞る。 //錬成するルーマニア人の人数を決め打ち、錬成可能ならheadを引き上げ、そうでないならtailを引き下げ //錬成する人数分「魔術1」を行う必要があるので[r/p]回より多く錬成を行うことはできない。 long long head = 0,tail = (r / p) + 1LL; while(tail - head > 1){ //現在の下限と上限の中間を取得する long long center = (head + tail) / 2LL; //shortage:ルーマニア人をcenter人作るのに足りない人数。 //surplus:ルーマニア人をcenter人作るのに余る人数。 long long shortage = 0,surplus = coder[3]; for(int i=0;i<3;i++){ //赤青黄コーダーそれぞれについてcenter人作るのに足りるか余るか。 if(coder[i] < center) shortage += center - coder[i]; else surplus += coder[i] - center; } if(surplus < shortage){ //余った人を適切に変化させたところで足りないのであれば不可能。 tail = center; }else{ //錬成する人数分「魔術1」を行う long long cost = p * center; //足りない人数分「魔術2」を行う cost += q * shortage; //合計コストがレートを上回っているなら不可能 //そうでないなら可能 if(cost > r) tail = center; else head = center; } } cout << head << endl; }