These return functions are all monotonically increasing. Use hill-climbing.
Start with \$200k allocated to each product, an allocation of $(2,2,2,2,2)$. Your largest increment is with product E ($0.65 - 0.45 = 0.2$). Your smallest decrement is with product B ($0.30-0.18 = 0.12$). So your new allocation is $(2,1,2,2,3)$.
You have an unallocated \$80k, but that's not enough to purchase an increment. Now find the remaining largest increment and smallest decrement pair, apply them. You'll have more than \$100k unallocated with which you acquire one more largest increment (without a decrement).
Repeat until no more increment/decrement pairs remain and you do not have enough unallocated to just increment the allocation to a product.