Solution for first question pretty simple comparision to sencond.
Solution 1: Burn rope A from both end and rope B from one end, Once A fully burned up till that time we burned rope for 30 minutes and then start fire from another side of B so remained rope will take to complete burn 15 minutes more Thus, we have got 30+15 = 45 minutes.
Solution 2:
We are given a rope of 1-hour burn time and

**we need to measure 15 minutes**. Doubling the speed is easy by burning the rope from both the ends but the same is not true when you need to increase the speed four fold. For example, if you cut a rope into two halves H1 and H2 with burning time 10 and 50 respectively. Now, burning both of them from both the ends does not help as H1 will burn in 5 minutes where as H2 will take 25 minutes. Anyways, the solution is , you have to cut the rope into two pieces ( need not be half, because of non-uniformity it does not matter whether you cut at the middle point or not ) P1 and P2. Note that we need to measure 15 minute with 60-minutes burn time rope. Or in short, given a rope of length L( in time when burned from one end ) we need to measure L/4. Burn, P1 and P2 from both the ends. P1 = 30-x and P2 = 30+x where x \in [0,30). Because we are burning from both the ends, P1 will get burnt in 15-(x/2) minutes. For P2 , 30+x – 2*(15-(x/2)) = 2x, because P2 is also burning from both the ends. At the end of 15-(x/2) minutes P2 will have length 2x remaining. To measure exactly 15 minutes we need to measure time x/2 after 15-(x/2) has elapsed. We are again back to the same problem. We have a rope of length 2x and we need to measure x/2 which is increasing the speed four fold. So, we can keep on repeating this experiment. How long do we need to repeat this? Well, until both the pieces finish burning exactly at the same time. Why? Say we have a rope of length y and we need to measure y/4. Two pieces P1 and P2 measures y-z and z. When both are lighted from both the ends time taken will be (y-z)/2 and z/2 respectively. If they finish burning at the same time then (y-z)/2 = z/2 => y = 2z Burning time was z/2 = y/4 which is what we wanted.