If A can run this program at will and it determines the minimum value, it's O(log(n)) to determine what B is, even with perfect encryption, by using arbitrary values of A.
INT X = MAX INT PREV_X = 0 BOOL B_IS_MIN = True
While (X != PREV_X){
PREV_X = X B_IS_MIN = Encrypted_Min(X,B)
If(B_IS_MIN), X = X/2 If(!B_IS_MIN), X = X*1.5
}
Unless I've made a typo, this psuedocode will step to B in log time, and will break the while loop once it's found, even if the user has no way to know the value of B besides the minimum.