PKU 3475 Paper-, er, Transcript-Folding Game

http://poj.org/problem?id=3475
c*dの大きさの紙を、a*bの大きさの封筒に入れたい。
最低何回折れば入れられるかを求めろというような問題。

縦と横の割り当てを試して、小さい方を出力する。

PI sol(ll a,ll c,ll d){
  PI ret(0,0);
  while(c<a){
    c*=2;
    ret.F++;
  }
  while(d<a){
    d*=2;
    ret.S++;
  }
  return ret;
}

main(){
  ll a,b,c,d;
  while(cin>>a>>b>>c>>d){
    PI ap=sol(c,a,b),bp=sol(d,a,b);
    cout<<min(ap.F+bp.S,ap.S+bp.F)<<endl;
  }
}