dfs+优化,也可以dp
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
typedef long long ll;
const int N=1e5+10;
ll d[N];
ll ma,mb;
int n,ans;
void dfs(int t,ll a,ll b)
{
if(a>=ma&&b>=mb)
{
if(ans==-1||n-t-1<ans)
ans=n-t-1;
return;
}
if(t==-1) return;
if(d[t]==2)
{
int ka=0;
while(a<ma)
{
ka++;
a*=2;
}
int kb=0;
while(b<mb)
{
kb++;
b*=2;
}
if(ka+kb>t+1) return;
if(ans==-1||ka+kb+n-t-1<ans)
ans=ka+kb+n-t-1;
return;
}
if(a<ma)
dfs(t-1,a*d[t],b);
if(b<mb)
dfs(t-1,a,b*d[t]);
}
int main()
{
int h,w,a,b;
scanf("%d%d%d%d%d",&a,&b,&h,&w,&n);
for(int i=0;i<n;i++)
scanf("%lld",&d[i]);
sort(d,d+n);
ans=-1;
ma=a;mb=b;
dfs(n-1,h,w);
dfs(n-1,w,h);
printf("%d\n",ans);
return 0;
}