#include <bits/stdc++.h>
#define inf INT_MAX
#define longlonginf LONG_LONG_MAX
#define mod 1000000007
#define MAXN 100005
#define pii pair<ll,ll>
#define ll long long
#define deb(x) cerr<<"[ "<<#x<<" = "<<x<<" ]";
#define yes() cout<<"YES\n";
#define no() cout<<"NO\n";
using namespace std;
ll n,m,cur,q,k,x,y,z;
ll ans = 0;
string subtask;
void solve(){
ll w,h,tw,th;
cin>>w>>h>>tw>>th>>n;
ll a[n];
for(int i = 0 ; i < n ; i++){
cin>>a[i];
}
if( ( w <= tw && h <= th ) || ( w <= th && h <= tw ) ) {
cout<<0<<"\n";
return;
}
sort(a,a+n,greater<ll>());
for(int i = 0 ; i < min(n,(ll)34) ; i++){
vector<ll> v1,v2;
ll t1 = (i+1)/2;
ll t2 = i+1 - t1;
//generate v1
for(ll j = 0; j < (1<<t1) ; j++){
x = 1;
for(ll k = 0 ; k < 20 ; k++){
if( (1<<k) & j ) x *= a[k];
}
v1.push_back(x);
}
//generate v2
for(ll j = 0; j < (1<<t2) ; j++){
x = 1;
for(ll k = 0 ; k < 20 ; k++){
if( (1<<k) & j ) x *= a[k+t1];
}
v2.push_back(x);
}
//merge
sort(v2.begin(),v2.end());
//~ for(auto u : v1) cout<<u<<" ";
//~ cout<<"\n";
//~ for(auto u : v2) cout<<u<<" ";
//~ cout<<"\n";a
vector<ll>::iterator it;
ll total = *(v2.end()-1);
ll total2 = *max_element(v1.begin(),v1.end());
for(auto u : v1){
//no flip
bool good1 = 1, good2 = 1;
ll foo = (w+u*tw-1)/(u*tw);
it = lower_bound(v2.begin(),v2.end(),foo);
if( it == v2.end() ){
good1 = 0;
}
else{
ll p = (total2/u)*(total/(*it));
if(!(u*(*it)*tw >= w && p*th >= h) ) good1 = 0;
}
//flip
foo = (h+u*tw-1)/(u*tw);
it = lower_bound(v2.begin(),v2.end(),foo);
if( it == v2.end() ){
good2 = 0;
}
else{
ll p = (total2/u)*(total/(*it));
if(!(u*(*it)*tw >= h && p*th >= w) ) good2 = 0;
}
//check
if( good1 || good2 ){
cout<<i+1<<"\n";
return;
}
}
}
cout<<-1<<"\n";
}
int main(){
ios_base::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
int T = 1;
//cin>>T;
for(int i = 0 ; i < T ; i++){
//cout<<"Case #"<<i+1<<": ";
solve();
}
return 0;
}
/*
you thought u declared it huh?
not i but x
logical operator
wrong example/proof
thoroughly
wrong variables
thinking it wrong
bruh just try some test case
capitals ;-;
wrong data structure lol
count memory usement
corner case
oversized array
orders
statements
size initializer
while con
map -> array
wrong digits??
swapped variables??
check if theres any variabled
that got declared twice
find some pattern
name collision
constraints??!
mod !!
resets
*/
e-maze-in | Bricks Game |
Char Sum | Two Strings |
Anagrams | Prime Number |
Lexical Sorting Reloaded | 1514A - Perfectly Imperfect Array |
580A- Kefa and First Steps | 1472B- Fair Division |
996A - Hit the Lottery | MSNSADM1 Football |
MATCHES Playing with Matches | HRDSEQ Hard Sequence |
DRCHEF Doctor Chef | 559. Maximum Depth of N-ary Tree |
821. Shortest Distance to a Character | 1441. Build an Array With Stack Operations |
1356. Sort Integers by The Number of 1 Bits | 922. Sort Array By Parity II |
344. Reverse String | 1047. Remove All Adjacent Duplicates In String |
977. Squares of a Sorted Array | 852. Peak Index in a Mountain Array |
461. Hamming Distance | 1748. Sum of Unique Elements |
897. Increasing Order Search Tree | 905. Sort Array By Parity |
1351. Count Negative Numbers in a Sorted Matrix | 617. Merge Two Binary Trees |